Inverser l'orde des mots

Répondre
mojorisin
le 19/08/2004 à 14:12
mojorisin
Comporte deux gars?
Genre Bart Simpsons ET Mohamed Ali sur un seul champs?
echo ’16i[q]sa[ln0=aln100%Pln100/snlbx]sbA0D4D465452snlbxq’|dc
mojorisin
le 19/08/2004 à 14:28
mojorisin
Tiens voila comment faire par un petit exemple :
<?php
$chaine = "Simpsons Bart Ali Mohamed";
$tab = str_word_count($chaine,1);
$tab2 = array_chunk($tab,2);
foreach($tab2 as $key => $array){
echo $array[1].' '.$array[0].'<br>';
}
?>
echo ’16i[q]sa[ln0=aln100%Pln100/snlbx]sbA0D4D465452snlbxq’|dc
zebden
le 19/08/2004 à 14:41
zebden
bon tu rajoute un champs prenom tu verra tu galera bcp moins ... smiley
zebdinou pour les intimes / Blog : http://www.zebden.fr
Peacock
le 19/08/2004 à 14:44
Peacock
Mojorisin avec Maj,

J'ai pas encore essayer ton code,
mais un détail important c'est que le "et"
de "Bart Simpson et Mohammad Ali "
est inclus dans le champs...

Ouaih bon, Zebden,
j'aimerais m'en sortir sans rajouter un champs prenom, mon gars... Parce que y a déjà un paquet
de page active et mise en page... You see the thing ? smiley
zebden
le 19/08/2004 à 15:03
zebden
Fegnéant smiley smiley
zebdinou pour les intimes / Blog : http://www.zebden.fr
mojorisin
le 19/08/2004 à 15:09
mojorisin
Bon voila, en espérant qu'il n'y ait pas ENCORE des vices cachés dans tes données :p

<?php
$chaine = "Simpsons Bart et Ali Mohamed";

preg_match("/^(.+?)(?:\Wet(?!\w)\s+?(.+?))?$/",$chaine,$strings);
array_shift($strings);

foreach($strings as $key => $noms){
$tab = explode(' ',$noms);
echo $tab[1].' '.$tab[0].'<br>';
}
?>
echo ’16i[q]sa[ln0=aln100%Pln100/snlbx]sbA0D4D465452snlbxq’|dc
Peacock
le 19/08/2004 à 15:54
Peacock
mojorisin,

ça fonctionne bien but pourrais tu
me décrypter un pti peu
l'exp reg :

<?php preg_match("/^(.+?)(?:\Wet(?!\w)\s+?(.+?))?$/",$chaine,$strings); ?>


Merci à toi...

Pour les vices cachés je te fais signe dès qu'ils remontent à la surface...

Merci encore
Peacock
le 19/08/2004 à 16:15
Peacock
Voire, tout le code, pour être
moins bête ce soir...
Merci à toi
mojorisin
le 19/08/2004 à 16:20
mojorisin
/^(.+?)(?:\Wet(?!\w)\s+?(.+?))?$/
Décomposition de la regexp :
(.+?) capture tous les caractères de façon non avide du début e la chaine jusqu'au mot 'et' .
ouverture de parenthèse de regroupement (sans capture) optionnelle: (?)?:
ensuite recherche du mot 'et' uniquement précèdé d'un non-mot : \W(equivalant à [^A-Za-z_]) et uniquement si il n'est pas suivit par un mot \w(equivalant à [A-Za-z_]). ceci pour éviter que la regexp ne reconnaisse 'et' dans un nom.
Ensuite on recherche un ou plusieur espace puis captures de tous les caractères restant jusqu'à la fin de la chaine.

Voila, en espérant que ce soit assez clair :-p

J'avais posté un lien sur un tuto sur les expressions régulières avancées avec Perl si tu le retrouve :-)
echo ’16i[q]sa[ln0=aln100%Pln100/snlbx]sbA0D4D465452snlbxq’|dc
Répondre
LoadingChargement en cours