2010-10-10 5 views
1

Как заменить строку из определенной строки? См. Мой пример ниже.PHP: заменить строку из определенной строки на определенную строку

$string_value="<b>Man one</b> <img src=\"http://www.abc.com/image1.jpg\">and <b>Man two</b> <img src=\"http://www.abc.com/img2.png\">"; 

Теперь мой ожидал из пут = <b>Man one</b> and <b>man two</b>. только тег изображения должен быть удален.

Поэтому мне нужно вырезать полную строку из "<img" в ">" из строки $ string_value. Итак, как я могу вырезать полную строку между "<img" до ">", используя preg_replace или что-то еще.

Параметр замены должен быть пустым.

ответ

1

Вы можете использовать регулярные выражения, чтобы исключить IMG тегов:

<?php 
$text = "Man one <img src=\"http://www.abc.com/image1.jpg\">and Man two <img src=\"http://www.abc.com/img2.png\">"; 
$pattern = "/<img(.*?)>/i"; 
$replace = ''; 
print preg_replace($pattern,$replace,$text); 
?> 
+0

Спасибо, это работает, я хочу этого. Князевы. – riad

1

Просто используйте strip_tags ($ string_value); и вы получите желаемый результат.

+0

Спасибо, что works.But мне нужно удалить тег IMG only.Because У меня есть много других HTML-тегов, которые я не упомянутых в my example.so, это их способ удалить тег ima только, что я упоминаю ответ PLS – riad

+0

@riad: 'strip_tags' принимает дополнительный параметр, который указывает допустимые теги, просто передайте строку, содержащую все теги, которые вы хотите позволять. – casablanca

+0

@Dear kiselovs, thx. Я получаю this.their есть много других html tags.so его defficult, чтобы включить все теги. Мне нужно заменить img tag only.so PLS помочь мне удалить только тег изображения ..thx again..riad – riad

2

Похоже, вы хотите снять метки.
Вы можете сделать это легко, вызвав функцию strip_tags, которая получает HTML и PHP теги, удаленные из заданной строки.

$string_value = strip_tags($string_value); 

EDIT:

Так как вы хотите, чтобы раздеть только <img тег, вы можете использовать этот function:

function strip_only($str, $tags) { 
     if(!is_array($tags)) { 
       $tags = (strpos($str, '>') !== false ? explode('>', str_replace('<', '', $tags)) : array($tags)); 
       if(end($tags) == '') array_pop($tags); 
     } 
     foreach($tags as $tag) $str = preg_replace('#</?'.$tag.'[^>]*>#is', '', $str); 
     return $str; 
} 

и называют его:

$string_value = strip_only($string_value,'img'); 

Working link

+0

Спасибо, это works.But мне нужно удалить только тег img. Потому что у меня есть много других html-тегов, которые я не упоминал на моем example.so, это их способ удалить тег ima только, что я упоминаю? PLS ответ – riad

+0

' string strip_tags (string $ str [, string $ allowable_tags]) 'Вы можете разрешить те теги, которые вы хотите. –

+0

снова thx bro, но у меня есть много других тегов html на этой строке. В принципе мне нужно заменить img tag only.so PLS помочь удалить тег img только ... thx again – riad

Смежные вопросы