|
|
|
| Написать такое правило для ereg_replace, которое будет находить в произвольном html подстроку вида:
<img ... src="*"> и заменить ее на <img ... src="NewUrl/*">
При этом корректно должны быть обработаны строки вида:
<img border=0 alt="erfrfrf" src="*" style="....">
<img src=*>
<img src='*'>
<img src="*" />
Усложнение:
Не должны заменяться строки, где путь к картинке абсолютный, т.е. вида:
<img src="http://ya.ru/images/1.jpg" />
помогите плизз очень надо!!! | |
|
|
|
|
|
|
|
для: zzDimazz
(25.11.2007 в 15:39)
| | Не особо понятно, поточнее можно? | |
|
|
|
|
|
|
|
для: Faraon
(25.11.2007 в 19:09)
| | Написать такой скрипт который бы в HTML файле находил строки вида
<img src="http://img.yandex.net/i/www/logo-ua.png" width=178 height=120 title="Yandex"alt="Яndex" border=5>
и менял их на такие
<img src="NEW_URL/http://img.yandex.net/i/www/logo-ua.png" width=178 height=120 title="Yandex"alt="Яndex" border=5>
Приэтом все параметры рисунка border width height и тд не должны меняться
У честь что в поле src = могут быть такие кавычки " и ' а могут не быть вообще!
Не должны заменяться строки, где путь к картинке абсолютный, т.е. вида:
<img src="http://ya.ru/images/1.jpg" /> | |
|
|
|
|
|
|
|
для: zzDimazz
(25.11.2007 в 20:15)
| |
// входные параметры - 2 урла (от корня!) - старый и новый
$pattern = array("/([href|HREF]\s*=\s*)(\"|'|')\s*({\w*:\w*})?(\/?)("."$link".")([^\w^\.^_^-])/",
"/(window\.open\s*\(\s*)(\"|'|')\s*({\w*:\w*})?(\/?)("."$link".")([^\w^\.^_^-])/",
"/(window\.location\s*\(\s*)(\"|'|')\s*({\w*:\w*})?(\/?)("."$link".")([^\w^\.^_^-])/",
"/(document\.location\s*\(\s*)(\"|'|')\s*({\w*:\w*})?(\/?)("."$link".")([^\w^\.^_^-])/");
$replace = array("\\1\\2\\3\\4".$new_url."\\6",
"\\1\\2\\3\\4".$new_url."\\6",
"\\1\\2\\3\\4".$new_url."\\6",
"\\1\\2\\3\\4".$new_url."\\6");
$link = preg_quote($link,"/");
// кроме того нужно убрать начальный и конечный слэш, если такие есть
// а потом просто замена
$content_new = preg_replace($pattern,$replace,$content);
|
| |
|
|
|
|
|
|
|
для: Anna_php
(26.11.2007 в 16:10)
| | Cпасибо большушее!!!!!!!!!! | |
|
|
|
|
|
|
|
для: Anna_php
(26.11.2007 в 16:10)
| | код необычно написан , наверное лучше сделать
$replace = "\\1\\2\\3\\4".$new_url."\\6";
потомучто все значения массива одинаковые.
идея насчёт массивов наверное правильная
, если все эти пути не нужны только как GET-параметры для отдачи одной и той-же -картинки,
и если я только правильно понял что и для чего делается,
например
<?
$str = '<html><img src="http://test.ru/img.gif"/><br />
<img src="test.gpg"/>text1<br />
<img src="gd/test.php" border="5px" width="90%" height="20px"/>text2<br />
<img border="5px" width="90%" height="20px" src="/test.gif"/>text3<br />
<img src="http.gif"/>text4<br />
<img src="http://test.ru/img/?var=test"/>text5<br />
';
$str = preg_replace( '#(<img [^>]*?src="?\'?)((?!http://)[^ >"\']+)(\"?\'?[^>]*>)#esi',
"'\\1' .'/scripts/?img=' . rawurlencode('\\2') . '\\3'",
$str );
echo htmlspecialchars($str, 3) ;
|
непойму почему у меня в том что проходит через preg_replace экранированы ковычки
поэтому код неработает :)
может настройки какие | |
|
|
|
|
|
|
|
для: exp
(26.11.2007 в 21:16)
| | >> непойму почему у меня в том что проходит через preg_replace экранированы ковычки
поэтому код неработает :)
Хз почему так получается, но если поменять местами кавычки и апострофы, всё нормально:
'"\\1" ."/scripts/?img=" . rawurlencode("\\2") . "\\3"',
|
| |
|
|
|
|
|
|
|
для: zzDimazz
(25.11.2007 в 20:15)
| | Интересно а чем отличается абсолютность этого пути
http://img.yandex.net/i/www/logo-ua.png
|
и этого
http://ya.ru/images/1.jpg
|
;) | |
|
|
|