Vous obtenez un problème où preg_replace ne remplace que la première occurrence trouvée puis saute à la ligne suivante et ignore les parties restantes sur la même ligne que je souhaite également remplacer. Ce que je fais est que je lis un fichier CSS qui a parfois plusieurs "url (media/pic.gif)" sur une ligne et remplace "media/pic.gif" (le fichier est alors sauvegardé comme une copie avec les pièces remplacées). Le contenu du fichier CSS est mis dans la variable $ resource_content de:preg_replace ne remplace que la première occurrence puis passe à la ligne suivante
$resource_content = preg_replace('#(url\((\'|")?)(.*)((\'|")?\))#i', '${1}'.url::base(FALSE).'${3}'.'${4}', $resource_content);
Est-ce que quelqu'un sait une solution pour pourquoi il ne remplace que le premier match par ligne?
Merci, ce a résolu le problème! – ImDom
Devrait probablement utiliser [^)] + au lieu de. *? – Oblio