Удаление тега img из строки

У меня есть строка, $content, который содержит:

<p>Some random text <img class="alignnone" src="logo.png" alt="" width="1920" height="648"></p>

Теперь я хочу удалить тег изображения:

<img class="alignnone" src="logo.png" alt="" width="1920" height="648">

Я старался strip_tags но это больше не работает.

$content = strip_tags($content, '<img></img>');

-1

Решение

Вот полный рабочий пример.

<?php

$content = "<p>Some random text <img class=\"alignnone\" src=\"logo.png\" alt=\"\" width=\"1920\" height=\"648\"></p>";

echo strip_tags($content,"<p>");

?>
1

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

Если <p></p> это единственный другой тег, который вы можете использовать strip_tags как это:

$content = strip_tags($content, '<p></p>');

Если вы хотите сохранить другие теги, просто добавьте их ко второму аргументу strip_tags

Вы также можете использовать комбинацию строковых функций для достижения этой цели:

$count = substr_count($c, '<img ');
while($count >= 1){

$i = strpos($c, '<img ');
$j = strpos($c, '>',$i)+1;
$c = substr($c, 0,$i) . substr($c,$j);

$count--;
}
echo $c;

Это также заботится о нескольких <img> теги

0

Вы можете искать теги img с помощью функции strpos ():
http://www.w3schools.com/php/func_string_strpos.asp

Как только вы знаете начальную и конечную позиции внутри строки, вы можете получить доступ к нужным деталям с помощью функции substr ():
http://php.net/manual/de/function.substr.php

В вашем примере:

$left = strpos($content,'<img');
//$left should now be "20"//to find the closing >-tag you need the string starting from <img... so you assign that to $rest:
$rest = substr($content,(strlen($content)-$left+1)*(-1));
$right = strpos($rest,">")+$left;
//now you know where the img ends so you can get the string surrounding it with:
$surr = substr($content,0,$left).substr($content,(strlen($content)-$right)*(-1));

Редактировать: протестировано, будет работать для удаления первого тега img

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