Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1684 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Erreur Unknown modifier '/' avec preg_replace

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Erreur Unknown modifier '/' avec preg_replace

n°1817755
jonath88
Posté le 27-11-2008 à 15:22:15  profilanswer
 

Bonjour,
lorsque j'exécute cette fonction:
$news = preg_replace("/\[url=".$liens."\]".$text_liens."\[/url\]/", "<a target='_blank' href='".$liens."'>".$text_liens."</a>", $news);
PHP me retourne cette erreur:
Warning: preg_replace(): Unknown modifier '/' in /var/www/bo/admincompta/BO/website/test_bibit_blacklist/news_insert_action.php on line 15
 
Je n'arrive pas à trouver pourquoi cette erreur apparait...
 
Merci

mood
Publicité
Posté le 27-11-2008 à 15:22:15  profilanswer
 

n°1817765
yellu
Posté le 27-11-2008 à 15:36:24  profilanswer
 

$news = preg_replace("/\[url=".$liens."\]".$text_liens."\[/url\]/", "<a target='_blank' href='".$liens."'>".$text_liens."</a>", $news);  
 
Le / de [/url] doit être backslashé

n°1817770
jonath88
Posté le 27-11-2008 à 15:44:30  profilanswer
 

yellu a écrit :

$news = preg_replace("/\[url=".$liens."\]".$text_liens."\[/url\]/", "<a target='_blank' href='".$liens."'>".$text_liens."</a>", $news);  
 
Le / de [/url] doit être backslashé


 
C'est à dire?  :??:

n°1817836
jonath88
Posté le 27-11-2008 à 16:42:16  profilanswer
 

Personne sait??

n°1817874
yellu
Posté le 27-11-2008 à 17:11:42  profilanswer
 

BackSlasher c'est protéger un caractère spécial dans une chaine en lui collant un BackSlash aux fesses => \
 
Donc si on protège le mot [/url] dans le contexte d'une regexp ça donne \[\/url\] car [, ] et / sont des caractères spéciaux.

n°1817901
jonath88
Posté le 27-11-2008 à 17:31:10  profilanswer
 

Ma fonction avec l'ajout du backslashe:
$news = preg_replace("/\[url=".$liens."\]".$text_liens."\[\/url\]/", "<a target='_blank' href='".$liens."'>".$text_liens."</a>", $news);
me retourne cette erreur:

Warning: preg_replace(): Unknown modifier '/' in /var/www/bo/admincompta/BO/website/test_bibit_blacklist/news_insert_action.php on line 15

 
 :??:

n°1817908
yellu
Posté le 27-11-2008 à 17:37:49  profilanswer
 

dans tes variables $liens et $text_liens il doit y avoir des choses à backslasher aussi donc met leur un addslashes, et encore ça suffira surement pas car ça backslashera pas les [] () ...
 
Pourquoi tu n'utilises pas les variables internes aux regexps avec les parenthèses capturantes \1, \2, etc, ça simplifierai le problème ?


Message édité par yellu le 27-11-2008 à 17:39:16
n°1817917
jonath88
Posté le 27-11-2008 à 17:46:52  profilanswer
 

A présent je n'ai plus de message d'erreur mais mon script boucle et le preg_replace de la variable $news ne s'effectue pas.
 
Voici mon code:

Code :
  1. $news = "dqofhdsi hijshf dfjhdsfoi hfdhqfdq hfkjlhkj dq coucou ça va bien?? hé oui c'est moi
  2. s ih hslkjhjl hdfgd sd gsdfgohfggffkjdkjCliquez icidkfjdkjkjd kdf jkf fkjdf kdj kdregarde ça ^^jfk djkdjfizutfisjkl kj h lusfkj khg";
  3. do{
  4.  if(preg_match("#\[url#", $news) == false)
  5.   break;
  6.  $text_liens = substr($news, strpos($news, "]" )+1, (strpos($news, "[/url]" )-2)-strpos($news, "]" )+1);
  7.  $liens = substr($news, strpos($news, "[url" )+5, (strpos($news, "]" )-10)-strpos($news, "[url" )+5);
  8.  $liens = preg_replace("/\//", "\/", $liens);
  9.  $news = preg_replace("/\[url=".$liens."\]".$text_liens."\[\/url\]/", "<a target='_blank' href='".$liens."'>".$text_liens."</a>", $news);
  10. }while(true);


n°1817972
yellu
Posté le 27-11-2008 à 18:19:47  profilanswer
 

je verrais plutot un code de ce style :
 

Code :
  1. $news = "dqofhdsi hijshf dfjhdsfoi hfdhqfdq hfkjlhkj dq coucou ça va bien?? hé oui c'est moi
  2. s ih hslkjhjl hdfgd sd gsdfgohfggffkjdkjCliquez icidkfjdkjkjd kdf jkf fkjdf kdj kdregarde ça ^^jfk djkdjfizutfisjkl kj h lusfkj khg";
  3. $news = preg_replace('/\[url=(.+)\](.+)\[\/url\]/is', '<a target="_blank" href="\\1">\\2</a>', $news);


 
avec le premier (.+) qui pourrait être remplacé par une regexp plus complexe adaptés aux URLS, mais ça marche qd même avec (.+)


Message édité par yellu le 27-11-2008 à 18:20:28

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Erreur Unknown modifier '/' avec preg_replace

 

Sujets relatifs
erreur php[SQL]Erreur que je ne parviens pas à trouver dans une requête?!
Erreur 3197 Driver ODBC MySQL & Access en frontalErreur Instruction 'MoveComplete'
[Resolu] Comment modifier la durée de vie d'un cookies existant ?modifier un champ de texte
bien placer un message d'erreur dans un formulaire[ C ] Erreur de segmentation (core dumped)
pb erreur dans mon codeErreur d’exécution 7, mémoire insuffisante
Plus de sujets relatifs à : Erreur Unknown modifier '/' avec preg_replace


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR