Sortir une occurance d'un regex - PHP - Programmation
Marsh Posté le 14-10-2004 à 12:17:28
euhhh ....
ton tag est toujours du type [img] [/img]
[img=untruc] [/img]
n'existe pas ?
Marsh Posté le 14-10-2004 à 12:21:54
c'est
[img] ou [img=alt text] puis [/img]
donc les deux existent
Marsh Posté le 14-10-2004 à 12:26:05
je pense que l'unique facon de l'extraire c'est d'utiliser ereg()
http://fr2.php.net/manual/fr/function.ereg.php
Marsh Posté le 14-10-2004 à 12:35:35
while (preg_match("/\[img(=([a-zA-Z0-9\s:\?\=\&]+))?\]([_a-zA-Z0-9\.\/\?&\=\:-]*)\[\/img\]/", $this->str2parse)) { |
le truc me retourn le ereg à false, par contre il applique le preg_replace
d'ailleur il me retourne qu'un "non"
Marsh Posté le 14-10-2004 à 12:56:05
ben visiblement ton motif est mauvais alors
au lieu de echo "lu"; //$result[3];
print_r($result);
Marsh Posté le 14-10-2004 à 12:57:10
chacal_one333 a écrit : debug 1 : pas besoin de while |
je connais pas ton code dans sa gloablité mais ué ca m'etonnait vachement ca .....
Marsh Posté le 14-10-2004 à 16:48:31
chacal_one333 a écrit :
le truc me retourn le ereg à false, par contre il applique le preg_replace |
Pas besoin de délimiteur avec ereg.
Marsh Posté le 14-10-2004 à 16:52:58
je les ai retiré, mais ca marche toujours pas, et en plus, j'ai un probleme.
Je n'arrive pas a choppé les \n\s\t qui peuvent etre fait
genre
[b*]test
test
test
[/b*]
Marsh Posté le 15-10-2004 à 14:05:59
NB1: Dans un preg, le code (?: permet de ne pas comptabiliser une parenthèse.
NB2: J'ai peur que le \s contenu dans ton motif soit problématique.
Je pense que:
Code :
|
devrait faire l'affaire, en créant bien sûr une fonction html_img du genre:
Code :
|
Evidemment, tu auras loisir d'améliorer html_img pour qu'elle vérifie l'existence de l'image et produise, le cas échéant, un code alternatif.
Quant à la gestion des espaces avant et après les *img*, il me semble que \S fait ça...
Marsh Posté le 15-10-2004 à 14:15:23
ca c'est pas con
j'avais jamais pensé ) appelé une method dans une preg_replace
Marsh Posté le 15-10-2004 à 14:21:24
chacal_one333 a écrit : ca c'est pas con |
encore une chacalerie
Marsh Posté le 15-10-2004 à 14:21:59
ReplyMarsh Posté le 15-10-2004 à 14:24:43
chacal_one333 a écrit : ptet pas pousser la |
ben c'cest assez fréquent comme usage quand même
Marsh Posté le 15-10-2004 à 14:27:26
chacal_one333 a écrit : j'ai pas 40 ans d'experience hein |
Marsh Posté le 15-10-2004 à 15:26:29
tin ca merde, ca m'affiche toujours $2 quel que soit les guillement, double, escape et tout
Marsh Posté le 15-10-2004 à 15:33:11
private function showImage() { |
Marsh Posté le 15-10-2004 à 15:36:04
Mets $this->checkImageValidity('$2') entre guillemets "": n'oublie pas que cet argument doit être une CHAINE interprétable comme du code PHP.
Marsh Posté le 15-10-2004 à 15:41:06
D'autre part, tu n'as pas neutralisé la première parenthèse capturante (=, donc $2 n'est pas ce que tu crois.
Pour la neutraliser: (?:=
Marsh Posté le 15-10-2004 à 15:45:23
chacal_one333 a écrit : je l'avais deja fait, et ca retourne rien |
Ah? Je me demande si "$this->checkImageValidity('$2')" n'est pas interprété trop tôt.
Essaie "$this->" . "checkImageValidity('$2')" juste pour voir...
(Je tâtonne)
Edit: bon bah apparemment ça roule...
Marsh Posté le 15-10-2004 à 15:52:36
sauf le alt
il me sort
Citation : Parse error: parse error, unexpected ',' in c:\Work\BB_parse\classes\class.BBparser.php(59) : regexp code on line 1 |
si je retir le $1 (alt=google) en deuxieme param ca fonctionne nikel cela dit
Marsh Posté le 15-10-2004 à 15:55:05
Note qu'il y a des trucs que j'ai toujours pas pigés dans ton code. Par exemple, à quoi sert la séquence \s dans le premier motif?
Marsh Posté le 15-10-2004 à 16:09:47
chacal_one333 a écrit : sauf le alt
|
Aurais-tu l'extrême obligeance de nous montrer la ligne 59 de class.BBparser.php, ainsi que son voisinage immédiat?
Marsh Posté le 15-10-2004 à 16:11:59
la meme que d'habitude
private function showImage() { //<img src=\"\\3\" alt=\"\\2\"/> |
le preg_replace
$1 = alt
$2 = url
Marsh Posté le 15-10-2004 à 16:28:37
comme avant
private function checkImageValidity($image, $alt) { |
Marsh Posté le 15-10-2004 à 16:43:14
Ben là je sèche... Est-ce le $this-> qui fout la merde ou y a-t-il une syntax error triviale plus haut?...
A mon avis, ça vaudrait le coup, pour voir, de transformer la méthode checkImageValidity en simple function "statique" (enfin, hors de la classe) et d'appeler par conséquent "checkImageValidity('$2', '$1')" en 2e argu du preg.
Ce qui m'étonne, c'est que le code que j'ai posté plus haut ne plantait pas...
Marsh Posté le 15-10-2004 à 16:44:12
hmmm
vais tester ca voir
edit : ouais c'est bien ca
mais bon ca serait quand mieux si c'etait dans la meme classe quoi
Marsh Posté le 15-10-2004 à 16:47:04
Attends! y a un autre truc qui me déplaît:
$this->checkImageValidity(...)
n'est pas censé IMPRIMER mais RENVOYER une chaîne!!
Marsh Posté le 15-10-2004 à 16:49:58
ouais j'y avait pensé, mais ca ne resoud pas le probleme malheuresement
Marsh Posté le 15-10-2004 à 16:55:16
chacal_one333 a écrit : hmmm |
Pas encore mort! Que donne:
"\$this->checkImageValidity('$2', '$1')" ?
Marsh Posté le 14-10-2004 à 12:00:55
Voila je suis en train de faire un leger BB parser pour mes besoin perso mais je rencontre un soucis.
Dans une fonction pour convertir les tag img en image, j'aimerai tout d'abord recuperer l'url de l'image afin de voir si celle ci existe et l'affiche (ou pas) en consequence
j'ai ma methode
Mais j'ai auccune idée comment je peu sortir le \\3 de la chaine
Message édité par Profil supprimé le 14-10-2004 à 12:01:28