2010-08-14 7 views
1

Je travaille sur une expression rationnelle pour trouver et remplacer toutes les correspondances qui ne commencent pas par url (httpregexp trouver correspondance

chemins relatifs vont être converties en chemins absolut complet -à-dire: url (foo/bar)> url ('http://foo/bar ')

match:

  • url (foo/bar)
  • url (' foo/bar')

ne correspondent pas:

C'est ce que je suis venu avec jusqu'à présent, mais je ne suis pas 100% là

 $fileContents = preg_replace(
      '/url\(("|\')?(?<!(http))(.+?)("|\')?\)/i', 
      'url(\'' . $glmBaseUrl . $subDir . '/$3\')', 
      $fileContents 
     ); 

Répondre

2

Quelque chose comme ceci devrait suffire:Le problème avec le vôtre est que vous avez utilisé lookbehind négatif au lieu de lookahead négatif. Vous devez également utiliser [^\'] au lieu de ., sinon url('http://foo/bar') ne correspondra pas au ' optionnel, à défaut de l'aspect négatif car il s'agit de 'http et non de http, puis de faire correspondre le guillemet simple avec .+?.

+0

juste ce dont j'avais besoin, merci pour l'aide et le pourboire! – veilig

Questions connexes