Каков наилучший способ вырезать все HTML-теги из строки? - PullRequest
4 голосов
/ 10 августа 2009

Использование PHP, с учетом строки, такой как: this is a <strong>string</strong>; Мне нужна функция для удаления ВСЕХ HTML-тегов, чтобы вывод был: this is a string. Есть идеи? Заранее спасибо.

Ответы [ 4 ]

11 голосов
/ 10 августа 2009

PHP имеет встроенную функцию, которая делает именно то, что вы хотите: strip_tags

$text = '<b>Hello</b> World';
print strip_tags($text); // outputs Hello World

Если вы ожидаете неработающий HTML, вам нужно будет загрузить его в анализатор DOM, а затем извлечь текст.

5 голосов
/ 10 августа 2009

Как насчет использования strip_tags , которое должно выполнять только работу?

Например, (цитирование документа) :

<?php
$text = '<p>Test paragraph.</p><!-- Comment --> <a href="#fragment">Other text</a>';
echo strip_tags($text);
echo "\n";

даст вам:

Test paragraph. Other text

Редактировать: но учтите, что strip_tags не проверяет, что вы ему даете. Что означает, что этот код:

$text = "this is <10 a test";
var_dump(strip_tags($text));

Получит вас:

string 'this is ' (length=8)

(Все, что после того, что выглядит как начальный тег, удаляется).

1 голос
/ 10 августа 2009

strip_tags - это функция, которую вы ищете. Вы бы использовали что-то вроде этого

$text = '<strong>Strong</strong>';
$text = strip_tags($text);
// Now $text = 'Strong'
0 голосов
/ 09 февраля 2010

Я считаю, что это немного более эффективно, чем strip_tags () в одиночку, поскольку strip_tags () не будет убирать javascript или css:

$search = array(
    "'<head[^>]*?>.*?</head>'si",
    "'<script[^>]*?>.*?</script>'si",
    "'<style[^>]*?>.*?</style>'si",
);
$replace = array("","",""); 
$text = strip_tags(preg_replace($search, $replace, $html));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...