2013-03-09 3 views
7

У меня есть строка:PHP удаление HTML-теги из строки

<p justify;"="">Vers­lo cent­rai Lie­tu­vos ne­kil­no­ja­mo­jo turto plėt­ros aso­cia­ci­jos kon­kur­se ...</p> 

и хотите хотите удалить тег

<p justify;"=""></p> 

мой код:

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

, но я получаю пустую строку: string(0) "", что я делаю неправильно?

ответ

4

Поскольку HTML плохо сформирован, вам, вероятно, придется либо написать собственное регулярное выражение для удаления тегов, либо очистить HTML, прежде чем пытаться удалить теги.

Вы могли бы попробовать это, чтобы удалить все, что «выглядит как» тег:

$str = preg_replace("/<.*?>/", " ", $str); 
+0

Да плохо , это wordpress formating – Wizard

+0

Действительно? Почему Wordpress использует непревзойденную цитату? –

+0

Это работает для меня. strip_tags только преобразует теги в другие символы. –

15

Попробуйте поставить его как то

$content = strip_tags($text); 

Или вы можете сделать это с регулярным выражением, как, что:

$content = preg_replace('/<[^>]*>/', '', $text); 

к этому $content = strip_tags($text, '<p>'); вы позволяете <p> тег в StrI нг.

Для получения дополнительной информации см по ссылке http://php.net/manual/en/function.strip-tags.php

+0

И это не решение, так как его HTML плохо отформатирован. –

+0

Не работает. Я просто тестировал его на своей коробке, и эта первая непревзойденная цитата - проблема.Даже эта глухая полуколока работает с strip_tags, если у него не было этой первой цитаты ... –

+0

@MihaiIorga Я согласен с тобой. Это может быть ошибка типографии. – Toretto

2

Поскольку ваш HTML не отформатирован вы можете выбрать preg_replace() подход:

$text = '<p justify;"="">Vers­lo cent­rai Lie­tu­vos ne­kil­no­ja­mo­jo turto plėt­ros aso­cia­ci­jos kon­kur­se ... </p>'; 
$content = preg_replace('/<[^>]*>/', '', $text); 
var_dump($content); 
// string(108) "Vers­lo cent­rai Lie­tu­vos ne­kil­no­ja­mo­jo turto plėt­ros aso­cia­ci­jos kon­kur­se ... " 

Codepad Example

На strip_tags() docs он говорит: Поскольку strip_tags () на самом деле не проверяет HTML, частичные или сломанные теги могут привести к удалению большего количества текста/данных, чем ожидалось.

Также второй параметр предназначен для $allowable_tags.

-3

Это может помочь php-strip-tags

нормально, если prep_replace не работает, то попробуйте использовать JQuery для удаления HTML-теги.
просмотреть этот javascript-how-to-strip-html-tags

+0

Bro см. Мое сообщение, я использую 'strip_tags' – Wizard

+0

Хотя эта ссылка может ответить на вопрос, лучше включить основные части ответа здесь и предоставить ссылку для справки. Ответные ссылки могут стать недействительными, если связанная страница изменится. – Bohemian

+0

Спасибо @Bohemian будет помнить об этом. Я новичок в stackoverflow! – h4kl0rd

3

Это удалит все, - теги, ASCII, разрывы строк, но чистый текст:

strip_tags(preg_replace('/<[^>]*>/','',str_replace(array("&nbsp;","\n","\r"),"",html_entity_decode($YOUR_STRING,ENT_QUOTES,'UTF-8')))); 
+0

Почему бы не работать? все решения не работают .... – delive

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