Petit problème preg_replace_callback appellé deux fois..
5 messages • Page 1 sur 1
Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics
Petit problème preg_replace_callback appellé deux fois..
Helo !
J'ai un soucis que je n'airrive pas à résoudre.
voila grossièrement le code :
Si j'appel une seule fois la fonction function _la($texte), je n'ai aucun soucis. Seulement si je l'appel deux fois ou plus j'ai un problème, car il ne peut redéfinir la fonction test($val)..
Message :
Avez vous une idée de comment résoudre la chose ?
Je ne vois vraiment plus...
J'ai un soucis que je n'airrive pas à résoudre.
voila grossièrement le code :
- Code: Tout sélectionner
function _la($texte)
{
function test($val)
{
return '<LA>'.$val[1].'</LA>';
}
return preg_replace_callback('`\[LA\](.+)\[/LA\]`iU', 'test', $texte);
}
Si j'appel une seule fois la fonction function _la($texte), je n'ai aucun soucis. Seulement si je l'appel deux fois ou plus j'ai un problème, car il ne peut redéfinir la fonction test($val)..
Message :
Fatal error: Cannot redeclare test() (previously declared in d:...\test.php:417) in d:...\test.php on line 417
Avez vous une idée de comment résoudre la chose ?
Je ne vois vraiment plus...
- Code: Tout sélectionner
function test($val)
{
return '<LA>'.$val[1].'</LA>';
}
function _la($texte)
{
return preg_replace_callback('`\[LA\](.+)\[/LA\]`iU', 'test', $texte);
}
Ca devrais très bien marcher comme ca
Oui en effet cela fonctionne, dans un déroulement procédurale.
Moi j'ai cela dans une class et lorsque je sort la fonction test il ne me la reconnait pas (normal) et lorsque je rajoute le $this->test ça ne prend pas dans le preg_replace_callback.
En revanche si je sort ma fonction $test de la class cela fonctionne, mais ce n'est pas correcte comme écriture.
En fait le seule problème est que je ne peux que lui donner comme argument qu'une fonction "simple" et pas avec un $this->...
Si d'autres idées sur ce problème épineux.
Moi j'ai cela dans une class et lorsque je sort la fonction test il ne me la reconnait pas (normal) et lorsque je rajoute le $this->test ça ne prend pas dans le preg_replace_callback.
En revanche si je sort ma fonction $test de la class cela fonctionne, mais ce n'est pas correcte comme écriture.
En fait le seule problème est que je ne peux que lui donner comme argument qu'une fonction "simple" et pas avec un $this->...
Si d'autres idées sur ce problème épineux.
Y'a ptetre la réponse que tu cherche dans les commentaires de la doc php :
ou bien
Enfin ca se passe par la : http://fr3.php.net/preg_replace_callback
Edit : par la aussi, merci google (recherche : preg_replace_callback class) : http://www.webmasterworld.com/forum88/7623.htm
- Code: Tout sélectionner
Also, if you want to use a *static* class method for the callback function, you can refer to it like this:
preg_replace_callback(pattern, array('ClassName', 'methodName'), subject)
In PHP5, from within the class:
preg_replace_callback(pattern, array('self', 'methodName'), subject)
ou bien
- Code: Tout sélectionner
Instead of using preg_replace_callback() you could use preg_replace() like below:
<?php
// ** Simple function: **
function my_function( $my_param_one, $my_param_two ) {
// ...
}
preg_replace( "! \{(.+)-(.+)\} !e", "my_function('\\1', '\\2')", $input_string );
// ** Class: **
class my_class {
function my_class() {
preg_replace( "! \{(.+)-(.+)\} !e", "\$this->my_function('\\1', '\\2')", $input_string );
}
function my_function( $my_param_one, $my_param_two ) {
// ...
}
}
?>
Enfin ca se passe par la : http://fr3.php.net/preg_replace_callback
Edit : par la aussi, merci google (recherche : preg_replace_callback class) : http://www.webmasterworld.com/forum88/7623.htm
Yesssssssss!!!!!!!
Super !!! Je te remercie beaucoup !
J'étais sur la page de la doc. de PHP, mais il est vrai que je n'ai pas cherché en profondeur...à mes tords d'ailleurs...
Mais ils auraient quand même pu l'indiquer en haut tout de même.
En tout cas merci je me casse la tête depuis un moment !
Pour info au passage: le preg_replace avec l'option e c'est déconseillé.
C'est moins bien géré et plus lent.
Super !!! Je te remercie beaucoup !
J'étais sur la page de la doc. de PHP, mais il est vrai que je n'ai pas cherché en profondeur...à mes tords d'ailleurs...
Mais ils auraient quand même pu l'indiquer en haut tout de même.
En tout cas merci je me casse la tête depuis un moment !
Pour info au passage: le preg_replace avec l'option e c'est déconseillé.
C'est moins bien géré et plus lent.
5 messages • Page 1 sur 1
Formation recommandée sur ce thème :
Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.
Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.
Lectures recommandées sur ce thème :
- [Résolu]Problème JS - replace
- Il était une fois... un petit webmaster... en France
- [résolu] callback web via MSN, Skype ou tchat ?
- php preg masque
- Warning: preg_match() [function.preg-match]:
- fonction replace
- replace PHP
- Fonction Replace - MYSQL
- window.location.replace('**ça merdouille**')
- Problème gmail/réception même message 10 fois
- 79.999 fois tic et une fois tac pour faire 80.000 posts
- Petit problème graphique.... où est le problème !
- Comment appelle-t-on cette fraude ?
- Accents avec eregi replace // indexation Google
- Probleme URL Rewriting marche seulement 1 fois sur 2 !
Consultez la description détaillée des produits ou services de Google suivants : JotSpot
- Analyse du référencement Google
Cet outil vous donne un petit résumé de l'état de référencement de votre site dans Google. - Indice de densité
Cet outil vous permet de calculer l'indice de densité d'un mot-clé d'une page web. Il est calculé à la fois pour la balise TITLE, la balise META description et l'ensemble du texte de la page. - Déterminer l'âge d'un site
Cet outil vous permet de connaître une estimation de l'ancienneté d'un site : il fournit la date à laquelle Google l'a indexé la première fois (et la même chose pour archive.org). - Analyse de similarité textuelle
Cet outil vous permet de calculer la similarité entre 2 pages web. L'algorithme utilisé repose sur l'analyse des occurrences des mots (mais pas sur leur positionnement dans les pages). Google utilise cette notion à certains endroits dans son algorithme, mais de façon bien plus évoluée que ce petit outil... Avoir des pages trop similaires peut entraîner des problèmes d'indexation... Cet outil vous permettra peut-être de résoudre certains problèmes de contenus dupliqués.
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités




le forum