Recherche d'occurences dans une variable String [Resolu] - PHP - Programmation
Marsh Posté le 10-03-2006 à 11:50:49
Ca nécessite l'utilisation d'expressions régulières et de fonctions de remplacement dans une chaîne, comme ereg_replace par exemple (http://fr.php.net/ereg_replace).
Et pour en apprendre plus sur les expressions régulières : http://www.expreg.com/.
Marsh Posté le 10-03-2006 à 11:56:37
as-tu remarqué que je dois recuperer le nom de l'image? un substr? mais je dois detecter l'image...juste apres, c'est une histoire de ereg_replace, je sais bien ...
Marsh Posté le 10-03-2006 à 12:04:54
oui il avait remarqué et c'est bien pour ça qu'il te conseillait les regex.
Tu peux récuperer un "motif" ( quelque chose que tu as défini entre parenthèse) pour l'utiliser dans le remplacement ( avec $1,$2 ...)
Marsh Posté le 10-03-2006 à 12:10:47
zebestt a écrit : as-tu remarqué que je dois recuperer le nom de l'image? un substr? mais je dois detecter l'image...juste apres, c'est une histoire de ereg_replace, je sais bien ... |
Si tu connais ereg_replace tu devrais logiquement avoir entendu parlé des regex et donc tu devrais savoir comment t'en servir pour faire ce que tu veut faire ici.
(Mon message ne comporte aucune agressivité, des fois qu'un de plus se plaigne de l'accueil sur le forums...)
Marsh Posté le 10-03-2006 à 12:11:59
zebestt a écrit : Bonjour, |
Truc fait en 42 secondes (PHP 5) :
$text='<table><tr><td><img src="img.gif" /></td></tr></table>'; |
Marsh Posté le 10-03-2006 à 12:14:09
ReplyMarsh Posté le 10-03-2006 à 12:16:07
c'est sur ! Ca peut etre fait facilement avec un preg_match... penche toi sur les expressions réguliere
Marsh Posté le 10-03-2006 à 12:43:32
Utilisation d'XML?
Attention, si ca n'est pas un texte qui soit valide par rapport à la norme XML, alors l'analyse du texte risque de planter et rien ne sera trouvé ni remplacé.
L'utilisation combiné de "strpos"/"stripos" et "substr" serait le plus rapide en terme d'exécution dans le cas présent. Cependant la solution la plus simple au niveau code php, ca reste les expressions réguliéres pour ce genre de cas.
Marsh Posté le 10-03-2006 à 15:13:06
Mon problème est résolu, j'ai utilisé les expressions régulières avec preg, mai cette idée de xml est tres bonne (je retien ), en tout cas, merci.
Marsh Posté le 10-03-2006 à 15:15:56
tres bonne mais excessivement gourmande compte tenu de ce que tu voulais faire
Marsh Posté le 11-03-2006 à 12:15:16
ReplyMarsh Posté le 11-03-2006 à 14:45:46
Je veux bien mais quand même... un code de 15 lignes pour quelque chose qui peut tenir en une seule.... C'était vraiment QUE pour la frime!
Marsh Posté le 11-03-2006 à 18:29:21
L'algorithme :
1. Chercher la position du premier les guillemets, deuxième. Copier le nom du fichier.
2. Chercher "<img", et là insérer <a href = "img.gif"> devant lui
3. Chercher le premier ">" à droite d'ajouté au point 2. Insérer "</a>"
C'est tout!
Marsh Posté le 11-03-2006 à 19:01:01
Ouai et un coup de preg ça tient en une seule ligne et c'est quand même plus claire!
Marsh Posté le 11-03-2006 à 19:29:06
Pour moi il est assez difficile d'écrire une telle expression à une ligne, et encore moi paresseux
Marsh Posté le 11-03-2006 à 20:06:53
Ba tu sais j'ais longtemps galéré avce les regex mais sincérement ça vallait le coup! C'est tellement pratique! En plus tu fait un p'tit coup d'url rewriting avec des regex et ton site est mieux référencé...
Bref les regex c'est que du bonheure!
Marsh Posté le 12-03-2006 à 12:01:38
Voilà en mieux
$text = '<table><tr><td><img src="img.gif" /></td></tr></table>'; |
Marsh Posté le 13-03-2006 à 09:39:04
FlorentG a écrit : Voilà en mieux
|
Euhhh s'quoi l'interet des parenthèses avant et après le img? ça suffit amplement de faire:
Code :
|
Marsh Posté le 10-03-2006 à 11:43:49
Bonjour,
J'aurais une petite "colle" pour ceux qui connaissent un peu PHP 1,2,3,4 ou 5 peu importe.
Je m'explique,
j'ai une variable $text qui contient du code source.
exemple: $text='<table><tr><td><img src="img.gif" /></td></tr></table>';
Je voudrais arriver a creer une fonction qui me modifie cette variable en par exemple :
$text='<table><tr><td><a href="img.gif"><img src="img.gif" /></a></td></tr></table>';
je sais pas si je peux utiliser tokenizer comme en java. En tout cas c'est encore assez obscure pour le moment, si quelqu'un pouvait m'aider...
Merci
Message édité par zebestt le 10-03-2006 à 15:14:24