|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité régulier
![]() Inscription : mai 2007 Messages : 18 ![]() |
Boujour,
J'ai un fichier qui est contenue dans une chaine de caractere sur laquel j'utilise la fonction "preg_replace(mixed pattern, mixed replacement, mixed subject)" Le probleme est que "mixed pattern" doit etre une expression reguliere, c'est pour cela que je rajoute "#" avant et apres mais le probleme c que le pattern et le replacement contienne eux aussi un caractere que preg_replace consdidere comme des délimiteurs : "_" et qui sont en plein millieu de mon pattern et replacement! Alors comment me debrouillez pour que les "_" ne soit pas considerer comme des délimiteur? Sachant que jai essayer en mettant un anti slash devans ca n'a rien changer! Il ne me modifie toujours que la premiere partie de la chaine (celle qui est avant le premier "_"! Merci pour vos futures reponses! |
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() Inscription : janvier 2005 Messages : 2 288 ![]() |
on peut avoir le code correspondant s'il te plait?
Parce qu'il me semble que le but du premier et du dernier caractère dans le pattern est d'être le délimiteur (non présent dans la chaine donc). |
|
|
00
|
|
|
#3 | ||
|
Membre chevronné
![]() Étudiant Inscription : août 2005 Messages : 632 ![]() |
Ton pattern (et uniquement le pattern) est une regex de type PCRE ok.
La grande différence entre preg et ereg c'est qu'il y a des délimiteurs dans le premier. Ces délimiteurs sont là pour séparer la partie expression régulière des options (aussi appelés flags) qui vont être utilisés avec elle. Assez couramment, on utilise le délimiteur # ou ` car ce sont des caractères assez rarement utilisés mais presque nimporte quel caractère peut servir de délimiteur. Attention toutefois à ce que le caractère qui est utilisé pour délimiteur (prennons pour exemple le #) ne soit pas déja présent DANS la regex (comme par exemple (#<a style="color: #fff">#) car ici le moteur de regex ne comprendrai plus. Il n'y a pas de délimiteur pré determiné, il y a des méta caractères comme le ., le \, les () et les [] (pour ne citer qu'eux). Si dans votre regex vous utilisez du texte dont vous ne pouvez pas controler le contenu, utilisez comme délimiteurs un métacaractère et veillez à utiliser preg_quote sur le texte que vous ne controlez pas avant de l'integrer à votre regex. Bien evidemment, si vous meme ajoutez des caractères à dans votre regex, veillez à échapper les métacaractères (pour qu'ils ne soient pas pris comme délimiteurs). exemple : Code :
|
||
|
|
00
|
|
|
#4 | ||
|
Invité régulier
![]() Inscription : mai 2007 Messages : 18 ![]() |
J'utilise preg_replace car il est capable de comprendre les tableaux, ce qui n'est pas le cas de ereg, que j'utilisais avant en réalisant un boucle sur les éléments du tableaux, mais ereg est trop lent et il m'arrivait de dépasser les 30s de temps d'exécution, c'est pour cela que je veut absolument utilisé preg!
Sinon j'avais cité comme exemple de délimiteur # mais ça aurait pu être n'importe quel autre délimiteur, ici j'ai utilisé "/" Voila pour le code de remplissage des tableaux : Code :
Et voila pour l'utilisation : Code :
$chaine_xml=preg_replace($tab_e_indice,$tab_e,$chaine_xml); edit : soluces trouvé sur php.net : J'ai utilisé une autre fonction au final : J'ai commencé par creer mon tableaux : Code :
$temp=array_combine($tab_img_indice,$tab_img); |
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com