Невозможно удалить теги HTML из многобайтового ввода

У меня есть функция, которая помогает вырезать теги HTML из ввода, как показано ниже.

PHP

function strip_html_tags2( $str )
{
$var_search = array(
// Remove invisible content
'@<head[^>]*?>.*?</head>@siu',
'@<style[^>]*?>.*?</style>@siu',
'@<script[^>]*?.*?</script>@siu',
'@<object[^>]*?.*?</object>@siu',
'@<embed[^>]*?.*?</embed>@siu',
'@<applet[^>]*?.*?</applet>@siu',
'@<noframes[^>]*?.*?</noframes>@siu',
'@<noscript[^>]*?.*?</noscript>@siu',
'@<noembed[^>]*?.*?</noembed>@siu',
// Add line breaks before and after blocks
'@</?((address)|(blockquote)|(center)|(del))@iu',
'@</?((div)|(h[1-9])|(ins)|(isindex)|(p)|(pre))@iu',
'@</?((dir)|(dl)|(dt)|(dd)|(li)|(menu)|(ol)|(ul))@iu',
'@</?((table)|(th)|(td)|(caption))@iu',
'@</?((form)|(button)|(fieldset)|(legend)|(input))@iu',
'@</?((label)|(select)|(optgroup)|(option)|(textarea))@iu',
'@</?((frameset)|(frame)|(iframe))@iu',
);
$var_replace = array(
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',
"\n\$0", "\n\$0", "\n\$0", "\n\$0", "\n\$0", "\n\$0",
"\n\$0", "\n\$0",
);
//$str = html_entity_decode($str, ENT_QUOTES, 'UTF-8');
$str = preg_replace("/&#?[a-z0-9]+;/i"," ", $str);
$str = preg_replace( $var_search, $var_replace, $str );
return strip_tags( $str );
}

Это не работает, пока я пытаюсь использовать содержимое ниже, и результатом будет пустая строка.

<p>If you’ve had a website up since at least the beginning of the year...</p>

Это, вероятно, вызвано единственной цитатой, но я понятия не имею, как решить эту проблему.

Попробуйте скопировать и вставить его на демонстрационную страницу ниже.

демонстрация

Любые советы будут с благодарностью.

0

Решение

Задача ещё не решена.

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

Других решений пока нет …

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