У меня есть строка, $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>');
Вот полный рабочий пример.
<?php
$content = "<p>Some random text <img class=\"alignnone\" src=\"logo.png\" alt=\"\" width=\"1920\" height=\"648\"></p>";
echo strip_tags($content,"<p>");
?>
Если <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>
теги
Вы можете искать теги 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