Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Expression rationnelle

2 réponses
Avatar
Jack\.R
Bonjour,

J'ai une chaîne de caractères qui contient du HTML. Dans cette chaîne, je
souhaite modifier le chemin des images. Pour ce faire, je suis parti sur
preg_replace afin de remplacer tous les src="une_image" par
src="un_chemin_une_image". Là où cela se complique, c'est que je ne veux
pas modifier les src="/une_image" ou les src="http://truc.com/une_image"

Mes recherches sur un moteur de recherche avec négation expression
rationnelle ne m'ont pas menées bien loin.

Je dois probablement mal m'y prendre pour construire cette expression.

Avez-vous des pistes, tutoriel ou autre à m'indiquer ?

Merci

--
Jack.R

2 réponses

Avatar
Olivier Miakinen

J'ai une chaîne de caractères qui contient du HTML. Dans cette chaîne, je
souhaite modifier le chemin des images. Pour ce faire, je suis parti sur
preg_replace afin de remplacer tous les src="une_image" par
src="un_chemin_une_image". Là où cela se complique, c'est que je ne veux
pas modifier les src="/une_image" ou les src="http://truc.com/une_image"


Tu peux utiliser les assertions négatives. Ce ne serait pas utile pour
tester juste que le chemin ne commence pas pas un « / », mais pour le
cas de « http:// » c'est quand même plus simple.

Tester que le caractère suivant n'est pas un / :
(?!/)

Tester que la chaîne suivante n'est pas http:// :
(?!http://)

Donc :

preg_replace(
'|(src=")(?!/)(?!http://)(.*")|U',
'$1un_chemin_$2', $code_source);

Voire, tout simplement :

preg_replace(
'|(src=")(?!/)(?!http://)|',
'$1un_chemin_', $code_source);

Et même, en utilisant une assertion arrière :

preg_replace(
'|(?<=src=")(?!/)(?!http://)|',
'un_chemin_', $code_source);

Mes recherches sur un moteur de recherche avec négation expression
rationnelle ne m'ont pas menées bien loin.


Le mot-clé est « assertion » :
http://fr.php.net/manual/fr/regexp.reference.php#regexp.reference.assertions

Avatar
Jack\.R
Le Sat, 24 May 2008 22:11:44 +0000, Olivier Miakinen a écrit:

[snip]
Mes recherches sur un moteur de recherche avec négation expression
rationnelle ne m'ont pas menées bien loin.


Le mot-clé est « assertion » :
http://fr.php.net/manual/fr/regexp.reference.php#regexp.reference.assertions


Merci beaucoup pour ces exemples, le paragraphe correspondant.
Maintenant que j'ai le bon mot clé cela devrait aller.

--
Jack.R