par
naholyr » 03 nov. 2006, 12:07
Tiens en tatonnant un peu j'ai finalement obtenu ceci qui permet d'extraire les trois éléments :
#<A HREF="(.*?)" (?:.*?IMG="(.*?)")?.*?>(.*?)</A>#i
Le jeu c'est d'utiliser des sélecteurs non gourmands (plus faciles à maîtriser, mais un peu consommateurs de ressources je crois), et les parenthèses non capturantes (?: ... ) pour avoir un masque globale optionnel dont on ne veut capturer qu'une partie (le cas de IMG="..."). Mais surtout, surtout : PREG_* et non EREG_* qui de toute façon auraient du disparaître depuis bien longtemps (elles sont très peu performantes, et la syntaxe n'est pas tellement plus simple).
<?php
$texte = preg_replace('#<A HREF="(.*?)" (?:.*?IMG="(.*?)")?.*?>(.*?)</A>#i', 'Titre = $3, Image = $2, Lien = $1', $texte);
echo $texte;
?>
Titre = PhpMyAdmin, Image = image-1.ico, Lien =
http://admin.number.ath.cx/phpmyadmin/
Titre = phpPgAdmin, Image = , Lien =
http://admin.number.ath.cx/phppgadmin/
Titre = Forum "Les projets", Image = image-2.ico, Lien =
http://forum.number.ath.cx/
Titre = Chat Irc, Image = , Lien =
http://chat.number.ath.cx/
Titre = SquirrelMail - Accès Messagerie, Image = , Lien =
http://mail.number.ath.cx/squirrelmail/src/login.php
Tiens en tatonnant un peu j'ai finalement obtenu ceci qui permet d'extraire les trois éléments : [b]#<A HREF="(.*?)" (?:.*?IMG="(.*?)")?.*?>(.*?)</A>#i[/b]
Le jeu c'est d'utiliser des sélecteurs non gourmands (plus faciles à maîtriser, mais un peu consommateurs de ressources je crois), et les parenthèses non capturantes (?: ... ) pour avoir un masque globale optionnel dont on ne veut capturer qu'une partie (le cas de IMG="..."). Mais surtout, surtout : PREG_* et non EREG_* qui de toute façon auraient du disparaître depuis bien longtemps (elles sont très peu performantes, et la syntaxe n'est pas tellement plus simple).
[php]<?php
$texte = preg_replace('#<A HREF="(.*?)" (?:.*?IMG="(.*?)")?.*?>(.*?)</A>#i', 'Titre = $3, Image = $2, Lien = $1', $texte);
echo $texte;
?>[/php][quote]Titre = PhpMyAdmin, Image = image-1.ico, Lien = http://admin.number.ath.cx/phpmyadmin/
Titre = phpPgAdmin, Image = , Lien = http://admin.number.ath.cx/phppgadmin/
Titre = Forum "Les projets", Image = image-2.ico, Lien = http://forum.number.ath.cx/
Titre = Chat Irc, Image = , Lien = http://chat.number.ath.cx/
Titre = SquirrelMail - Accès Messagerie, Image = , Lien = http://mail.number.ath.cx/squirrelmail/src/login.php[/quote]