Есть ли в PHP функция замены элементов?

vave

Полезный
Регистрация
22 Июн 2007
Сообщения
467
Реакции
16
Не раз данный форум меня выручал, с моими странными затеями.
И вот появился у меня очень важный вопрос, для будущего моих идей.

Есть ли в PHP такая функция, которая заменяла бы в HTML коде любые элементы?
Например я инклудил сторонний сайт, и мне нужно что бы PHP заменил на сайте картинку,
например <img src="picture.png" /> на <img src="picture2.png" />
 
PHP:
$str = str_replace('picture.png', 'picture2.png', $str );

Или надо с DOM древом?
 
Последнее редактирование:
PHP:
$str = str_replace('picture.png', 'picture.png', $str );

Или надо с DOM древом?
Не знаю на счет DOM, я попробовал применить данный код, но что то он ничего на странице не поменял.

Сайт загружаю таким вот образом <?php include 'Для просмотра ссылки Войди или Зарегистрируйся ?>
 
Не знаю на счет DOM, я попробовал применить данный код, но что то он ничего на странице не поменял.

Сайт загружаю таким вот образом <?php include 'Для просмотра ссылки Войди или Зарегистрируйся ?>
Это как так Вы сайт грузите?

PHP:
$site = file_get_contents('http://web.com');
$site= str_replace('picture.png', 'picture2.png', $site);
echo $site;

Или
PHP:
ob_start();
include 'http://web.com';
$site = ob_get_clean();
$site= str_replace('picture.png', 'picture2.png', $site);
echo $site;
 
PHP:
preg_replace ('<img.+?src=[\'"](picture.png)[\'"].+?\/>', 'picture2.png', $сграбленная_страница);
 
  • Нравится
Реакции: vave
подключайте simple HTML DOM парсите нужную страницу и в дереве меняйте код как вам угодно
 
Здесь точка определяет точку. Зачем лишние символы
 
Затем, что здесь она означает не точку, а любой символ, и вообще этот регэксп не работает. Вы бы тестировали, прежде, чем советовать.!

Не говоря уж о том, что у вас угловые скобки < и > сейчас работают, как делиметеры регэкспа, а не как html-вские границы тэга.

В общем, правильный регэксп внизу в коде.

PHP:
<?php
$test_string = "<h1>Test</h1><img src='picture.png' border=1 width='450' height=\"100\"><p>Lorem ipsum</p>";
$test_string2 = "<img src='picture.png'>";

$result_string = preg_replace ('<img.+?src=[\'"](picture.png)[\'"].+?\/>', 'picture2.png', $test_string);
echo($result_string); echo("\n\n");

/*
Результат:

<h1>Test</h1><picture2.pngp>

ОШИБКА
*/

$result_string = preg_replace ('<img.+?src=[\'"](picture.png)[\'"].+?\/>', 'picture2.png', $test_string2);
echo($result_string); echo("\n\n");

/*
Результат:

<img src='picture.png'>

НЕ СРАБОТАЛО
*/

$result_string = preg_replace ('{<img\s+src=[\'"]picture\.png[\'"][^>]*\>}Uis', 'picture2.png', $test_string);
echo($result_string); echo("\n\n");

/*
Результат:

<h1>Test</h1>picture2.png<p>Lorem ipsum</p>

ПРАВИЛЬНЫЙ ВАРИАНТ
*/

?>
 
Назад
Сверху