PHP > Besoin d'aide pour un bout de code

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par gcvoiron, 7 Février 2007.

  1. gcvoiron
    gcvoiron WRInaute occasionnel
    Inscrit:
    19 Octobre 2005
    Messages:
    459
    J'aime reçus:
    0
    Bonjour,

    J'aurai besoin d'idées pour mettre en place un bout de code en PHP.
    Je voudrai en fait remplacer des mots par d'autres dans mon forum, sauf si ils se trouvent entre les balises et.
    La chaine de caractère s'appelle $chaine. Il faudrait en fait faire :
    Code:
    $chaine= str_replace("Mot11", "Mot22", $chaine);
    si ce n'est pas entre et.

    Auriez-vous des idées ?

    Merci.
     
  2. k2pi
    k2pi WRInaute occasionnel
    Inscrit:
    4 Février 2007
    Messages:
    272
    J'aime reçus:
    0
  3. gcvoiron
    gcvoiron WRInaute occasionnel
    Inscrit:
    19 Octobre 2005
    Messages:
    459
    J'aime reçus:
    0
    Ok merci, mais pour savoir qu'il y a balise , comment faire ? Une boucle for a...URL]" [/code] ? J'ai essayé mais en vain...
     
  4. lupuz
    lupuz WRInaute discret
    Inscrit:
    15 Mars 2006
    Messages:
    192
    J'aime reçus:
    0
  5. La Chaise sauvage
    La Chaise sauvage WRInaute impliqué
    Inscrit:
    11 Avril 2005
    Messages:
    536
    J'aime reçus:
    0
    sinon, je ne garantis pas l'efficacité pour de gros volumes de texte, mais cette solution fonctionne :


    Code:
    function gcvoiron_replace($cherche,$remplace,$chaine){
    	$flag = TRUE;
    	$tab = explode(' ',$chaine);
    	$i=0;
    	foreach($tab as $mot){
    		if($flag){
    			if(strpos(strtolower($mot),'[url]') !== FALSE) {
    				$flag = FALSE;
    			} else {
    				$mot = str_replace($cherche,$remplace,$mot);
    			}
    		}
    		if(strpos(strtolower($mot),'[/url]') !== FALSE) {
    			$flag = TRUE;
    		}
    		$res .= $mot.' ';
    		$i++;
    	}
    	return $res;
    }
    ce qui s'utilise évidemment comme ceci :

    Code:
    $string = "ceci est un test youpi [url]ceci est un test[/url] blabla test youpi ceci est un test youpi [URL] ceci est un test [/URL] blabla test youpi";
    
    $ok = gcvoiron_replace('test','ok',$string);
    
    echo 'Phrase initiale : '.$string;
    echo '<br/>Phrase produite : '.$ok;
    Et le résultat :


    Evidemment, si quelqu'un a des conseils quant à a l'optimisation de ceci, je suis preneur, c'est du vite fait 8)



    edit : moui... ma fonction a quelques problèmes... notamment quand le mot recherché est en majuscules, ou quand il est collé à une balise ouvrante ou fermante... enfin bref c'est du bricolage, quoi
     
  6. HawkEye
    HawkEye WRInaute accro
    Inscrit:
    23 Février 2004
    Messages:
    13 857
    J'aime reçus:
    5
    Il faut aussi tenir compte des liens ancrés:

    Code:
    [url=url]text[/url]
     
  7. La Chaise sauvage
    La Chaise sauvage WRInaute impliqué
    Inscrit:
    11 Avril 2005
    Messages:
    536
    J'aime reçus:
    0
    une deuxième solution, qui corrige certains des bugs que je viens de relever (mais pas le point évoqué par hawkeye)

    par contre là c'est sûr, il y a de la place pour optimiser (les regex, c'est pas trop mon point fort...) je vais aller vaquer à mes occupations... et je le laisse à titre d'exercice pour les suivants

    :lol:

    Code:
    function gcvoiron_replace($cherche, $remplace, $chaine, $b='url'){
       $chaine = preg_replace('#\['.$b.'\]#i','['.strtolower($b).']',$chaine);  // passe les balises recherchees en minuscule
       $chaine = preg_replace('#\[\/'.$b.'\]#i','[/'.strtolower($b).']',$chaine);
       $chaine = str_replace('['.$b.']',' ['.$b.']',$chaine);	// rajoute un espace avant
       $chaine = str_replace('[/'.$b.']','[/'.$b.'] ',$chaine);  // et après les balises recherchees
       $flag = TRUE;
       $tab  = explode(' ',$chaine);
       $i    = 0;
       foreach($tab as $mot){
          if($flag){
             if(strpos(strtolower($mot),'['.$b.']') !== FALSE) {
                $flag = FALSE;
             } else {
                $mot = preg_replace('#'.$cherche.'#i',$remplace,$mot);
             }
          }
          if(strpos(strtolower($mot),'[/'.$b.']') !== FALSE) {
             $flag = TRUE;
          }
          $res .= $mot.' ';
          $i++;
       }
       return $res;
    }
     
Chargement...
Similar Threads - PHP Besoin aide Forum Date
Besoin d'aide pour requête SQL PHP Développement d'un site Web ou d'une appli mobile 12 Novembre 2016
Besoin d'aide avec Phpmailer Développement d'un site Web ou d'une appli mobile 6 Juin 2013
[Forum PHPBB] Besoin d'aide Développement d'un site Web ou d'une appli mobile 23 Juillet 2012
Gros problème jai suprimer phpbb_config besoin d'aide Développement d'un site Web ou d'une appli mobile 9 Septembre 2010
[PHP/MYSQL] Besoin d'aide pour la simplification d'une requete Développement d'un site Web ou d'une appli mobile 9 Juillet 2009
Besoin aide sur Expression régulières en PHP. Développement d'un site Web ou d'une appli mobile 19 Juin 2009
Librairie GD php et transparence - gros besoin d'aide Développement d'un site Web ou d'une appli mobile 4 Février 2009
besoin d'aide script php affichage dossier sous dossier Développement d'un site Web ou d'une appli mobile 30 Janvier 2009
SMTP avec php : besoin d'aide svp Administration d'un site Web 24 Mai 2008
Besoin d'aide pour mon site Com1Assistant.com écrit en PHP Développement d'un site Web ou d'une appli mobile 23 Mai 2008
besoin aide pour php Développement d'un site Web ou d'une appli mobile 26 Janvier 2008
Besoin d'aide avec phpBB Développement d'un site Web ou d'une appli mobile 23 Octobre 2007
Besoin d'aide pour un reglage de BDD dans phpmyadmin Développement d'un site Web ou d'une appli mobile 21 Août 2007
Besoin d'aide intégration phpBB BD Développement d'un site Web ou d'une appli mobile 31 Juillet 2007
PHP->Besoin d'aide pour une requête Développement d'un site Web ou d'une appli mobile 3 Janvier 2007
PHP->Besoin d'aide pour un script de bannière Développement d'un site Web ou d'une appli mobile 30 Décembre 2006
[besoin aide] petit code php Développement d'un site Web ou d'une appli mobile 22 Novembre 2006
Besoin d'aide pour un logiciel en PHP Développement d'un site Web ou d'une appli mobile 23 Octobre 2006
Besoin d'aide pour un petit code php Développement d'un site Web ou d'une appli mobile 5 Septembre 2006
besoin d'une aide en php (formulaire) Développement d'un site Web ou d'une appli mobile 13 Juin 2006