Preg Заменить на видео объектный код - работает только для первого экземпляра - PullRequest
1 голос
/ 27 февраля 2011

Может ли кто-нибудь помочь мне понять, почему следующий код работает только для первого экземпляра width / height в объектном коде.Мне нужно заменить оба стиля, которые используют «высота: ххх; ширина: ххх», а затем также заменить фактическую высоту встраивания = «ххх» и ширину = «ххх»

вот прег замену:

$vid_object = preg_replace('~((width)\s?[=:]\s?[\'"]?)[0-9]+~i','${1}600',$vid_object);

$vid_object = preg_replace('~((height)\s?[=:]\s?[\'"]?)[0-9]+~i','${1}364',$vid_object); 

вот вывод видео:

<object style="height: 364px; width: 600px"><param name="movie" value="http://www.youtube.com/v/UF06-2Q0-G0?version=3"><param name="allowFullScreen" value="true"><param name="allowScriptAccess" value="always"><embed src="http://www.youtube.com/v/UF06-2Q0-G0?version=3" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="640" height="390"></object>

Я думаю, что это как-то связано с заменой части кода '$ {1} 600' или что результаты ограничены первым экземпляром.

Любая помощь с благодарностью.Тратить слишком много времени на охоту, когда регулярные выражения не моя специальность.Спасибо Николай

Ответы [ 2 ]

0 голосов
/ 28 февраля 2011

Точно так же, как Шад предположил, что это действительно проблема с магическими цитатами. Я просто использовал полосы на данных $ _POST.

0 голосов
/ 28 февраля 2011

try

$vid_object=preg_replace('/(width[\s:=\'"]+)\d+/i','${1}600',$vid_object);
$vid_object=preg_replace('/(height[\s:=\'"]+)\d+/i','${1}364',$vid_object);

Это немного шире.

Когда я запускаю это на предоставленном вами коде, я получаю

<object style="height: 364px; width: 600px"><param name="movie" value="http://www.youtube.com/v/UF06-2Q0-G0?version=3"><param name="allowFullScreen" value="true"><param name="allowScriptAccess" value="always"><embed src="http://www.youtube.com/v/UF06-2Q0-G0?version=3" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="600" height="364"></object>
...