|
|
|
| Нужно переделать большое количество изображений. ПХП-скрипт для обработки есть. Но очень не хочется вручную ему подавать адреса рисунков (много - долго). Выдернул рисунки из кода примерно в таком виде:
img src="/images/misc/prescription-120.jpg" height="120" width="120" class="product" alt="" /
Впринципе, проблема как-бы решается в таком виде:
preg_match('/\ssrc\s*=\s*"([^"]*)/', $params,$matches);
|
но в выражении не учитывается, что вместо двойных кавычек могут использоваться одинарные. Попытался сделать выражение универсальным:
preg_match('/\ssrc\s*=\s*("|\')([^\1]*)/', $params,$matches);
|
(использовал обратную ссылку)
но результат получился:
/images/misc/prescription-120.jpg" height="120" width="120" class="product" alt="" /
неправильным.
Я понимаю, что можно сделать так:
preg_match('/\ssrc\s*=\s*["|\']([^("|\')]*)/', $params,$matches);
|
Но хотелось бы разобраться с обратной ссылкой. В чем проблема? Почему не работает
preg_match('/\ssrc\s*=\s*("|\')([^\1]*)/', $params,$matches);
|
? | |
|
|
|
|
автор: ........ (05.01.2012 в 23:50) |
|
|
для: kosta_in_net
(05.01.2012 в 16:27)
| | >[^\1]
из-за этого
типа такого например работает
<pre><?php
$txt = '
img width="120" src="/images/misc/jpg" /
img src=\'/images/misc\\\'/jpg\' /'.............;
$re = '#\bsrc\s*=\s*([\'"])((?:(?!\1)\x5c?.)*)\1#is';
preg_match_all($re, $txt, $o);
var_export($o);
var_dump($o);
|
| |
|
|
|
|
автор: ......... (06.01.2012 в 00:04) |
|
|
для: ........
(05.01.2012 в 23:50)
| | точнее $re = '#\bsrc\s*=\s*([\'"])((?>(?!\1)\x5c?.)*)\1#is';
// не туда вставил ...........)) извиняюсь | |
|
|
|