Как удалить весь элемент IMG со значением SRC в строке UTF-8?

например, это алгоритм:

$text = 'some text1 <img src="1.jpg" />  some text2 <img src="2.jpg">';
if($src == '1.jpg')
remove(img tag in $text)
echo htmlspecialchars($text, ENT_QUOTES, "UTF-8")

и результат должен быть:

some text1 some text2 <img src="2.jpg>"

-1

Решение

использование preg_replace напрямую, без условий и preg_match необходимо.

$text = 'some text1 <img src="1.jpg" />  some text2 <img src="2.jpg">';

echo preg_replace('~(<img.*[\'"]1\.jpg[\'"].*>)~', '', $text); // some text1 some text2 <img src="2.jpg">

Первый ['"] необходимо, чтобы избежать удаления, например. a1.jpg файл, второй не является обязательным. Лучше понять, как это работает.

ОБНОВИТЬ
Из-за комментария ниже, здесь обновленная версия с именем переменной:

$file = '1.jpg';
$text = 'some text1 <img src="1.jpg" />  some text2 <img src="2.jpg" />';
echo preg_replace('~<img[^>]+[\'"]' . $file . '[\'"].*?/>~', '', $text);
2

Другие решения

Использовать str_replace() функция удалить все 1.jpg изображений.

$text = 'some text1 <img src="1.jpg" />  some text2 <img src="2.jpg">';
$text2 = str_replace('<img src="1.jpg" />','',$text);
echo $text2; // Will output "some text1   some text2 "

Если вы хотите запустить это в течение нескольких src значения, например в цикле измените строку 2 на эту:

$filename = 'xyz.jpg'; //set this to current filename that you want to remove from the string
$text2 = str_replace('<img src="' . $filename . '" />','',$text);

Увидеть Руководство по PHP: str_replace для деталей.

1

По вопросам рекламы [email protected]