2014-11-12 4 views
-1

Как создать шаблон, который заменяет все источники сценариев в документе php другой строкой?Создать шаблон для замены всех источников скриптов

К примеру, мы имеем $haystack = '<script src="oldscript.js"></script>';

И мы должны это сделать, как этот $haystack = preg_replace('/src="[a-zA-Z0-9]{1,250}"/', 'myscript.js', $haystack);

Но это не работает. Я делаю что-то неправильно? Или есть другой способ сделать это?

+0

Если вы не просто вешали на почему регулярное выражение не работает, самый большой общий знаменатель валидации заставляет ваше регулярное выражение уменьшаться до '(? <= src =") [^ "] + (? =") ', а длина бесполезна. – sln

ответ

0

Вы также должны включать точку в своем регулярном выражении, а также добавить src="..." в замене:

$haystack = preg_replace('/src="[\w.]{1,250}"/', 'src="myscript.js"', $haystack); 
+1

Да, вы правы, это была точка, которая нарушала шаблон. –

+0

Рад, что это получилось, вы можете пометить ответ как принятый, щелкнув по метке в левом верхнем углу моего ответа. – anubhava

0

попробовать это лучшее решение:

$re = "/(<script.*src=)(\"|')(.*)('|\")/"; 
$str = "<script type=\"javascript\" src='oldscript.js' ></script>\n<img src='test.jpg' />"; 
$subst = "\1\2myscript.js\4"; 

$result = preg_replace($re, $subst, $str, 1); 

Live demo

+1

Не совсем лучше: http://regex101.com/r/sL8bL0/2 – jmleroux

+0

Я сказал лучше не лучше. –

Смежные вопросы