Inverser l'orde des mots
Comporte deux gars?
Genre Bart Simpsons ET Mohamed Ali sur un seul champs?
echo ’16i[q]sa[ln0=aln100%Pln100/snlbx]sbA0D4D465452snlbxq’|dc
Exact, cas rare mais existant !
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
bon tu rajoute un champs prenom tu verra tu galera bcp moins ...
zebdinou pour les intimes / Blog : http://www.zebden.fr
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 ?
Fegnéant
zebdinou pour les intimes / Blog : http://www.zebden.fr
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
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
Voire, tout le code, pour être
moins bête ce soir...
Merci à toi
/^(.+?)(?:\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