Eléphant du PHP |
185 Messages
16 oct. 2009, 23:31
J'ai un peu de mal à comprendre ce que tu cherches exactement...
J'ai bien saisi que le nom que tu voulais extraire pouvait ne pas toujours avoir le même nombre de caractères (comme "Le Toro" - 7 caractères - et "El Toreador" - 11 caractères) , mais la chaîne qui précède fait-elle toujours 10 caractères, et celle qui succède contient-elle toujours la balise </a> ?
Si c'est le cas, la fonction substr ne suffira pas à elle seule. Pour commencer il faudra couper la chaîne à partir du dixième caractère, grâce à cette fonction :
$chaine = 'mon nom : El Toreador</a>, le seul, le vrai !';
$nouvelle_chaine = substr ($chaine, 10);
La variable $nouvelle_chaine contiendra donc désormais "El Toreador</a>, le seul, le vrai !". Les dix premiers caractères de la chaine (soit : "mon nom : ") auront été supprimés.
Ensuite il faudra spécifier que la balise </a> est le délimiteur (ou masque) de la nouvelle chaine et la remplacer, ainsi que tout ce qui la suis, par une chaine vide.
$masque = '#</a>.*#';
$replace = ''; // attention, il ne s'agit pas ici d'un guillemet, mais de deux apostrophes
$chaine_finale = preg_replace ($masque, $replace, $nouvelle_chaine);
Voilà, je ne garanti pas que ce soit la meilleure solution, ni même qu'elle fonctionne, mais c'est une piste à explorer.
