Merci pour ta réponse.
Pourrais-tu m'expliquer le fonctionnement de cette expression ?
J'aimerais comprendre et apprendre afin de les réaliser par moi même les prochaines fois.
La seule chose que je comprend c'est que la fonction preg_replace remplace '/((".*?"(\s+)){2})(?2)/' par '\1""\3' dans la chaine $str ...
Sinon le resultat n'est pas tout a fait celui attendu mais c'est de ma faute car je ne l'ai pas précisé dans mon premier post.
En effet cela fonctionne avec :
$str="blabladivers1 \"blabla divers2\" \"blabla divers3\" \"blabla a effacer\" blabla divers4 \"blabla divers5\" etc ";
Mais s'il ya quelque chose (du texte qui n'est pas entre guillemet) entre \"blabla divers3\" et \"blabla a effacer\"
$str="blabladivers1 \"blabla divers2\" \"blabla divers3\" blablaentre \"blabla a effacer\" blabla divers4 \"blabla divers5\" etc ";
, cela ne marche pas.
C'est pour cela que je voudrais vraiment remplacer ce qui se trouve précisemment entre le 5ème et le 6ème guillemet par du vide ('\1""\3' dans la regexp) .
Pour info, j'arrive a faire ce que je veux mais d'une facon qui n'est peut être pas très propre ... enfin je n'ai pas le choix je ne connais pas du tout les expressions regulières pour le moment.
Voila ce que je fais :
1 2 3
| $tab_tmp=explode('"', $str);
unset($tab_tmp[5]);
$str=implode('"', $tab_tmp); |
Partager