我有字符串:
<p justify;"="">Verslo centrai Lietuvos nekilnojamojo turto plėtros asociacijos konkurse ...</p>
并希望删除标记 p>
<p justify;"=""></p>
我的代码:
$content = strip_tags($text, '<p>');
但我得到空字符串:string(0) ""
,我做错了什么?
答案 0 :(得分:17)
试着把它说成那样
$content = strip_tags($text);
或者您可以使用正则表达式来执行此操作:
$content = preg_replace('/<[^>]*>/', '', $text);
通过此$content = strip_tags($text, '<p>');
,您可以在字符串中使用<p>
标记。
有关详细信息,请参阅链接http://php.net/manual/en/function.strip-tags.php
答案 1 :(得分:4)
由于HTML格式不正确,您可能需要编写自己的正则表达式以删除标记或清除HTML,然后再尝试删除标记。
您可以尝试删除“看起来像”标签的所有内容:
$str = preg_replace("/<.*?>/", " ", $str);
答案 2 :(得分:4)
这将删除所有内容 - 标签,ascii,换行符,但纯文本:
strip_tags(preg_replace('/<[^>]*>/','',str_replace(array(" ","\n","\r"),"",html_entity_decode($YOUR_STRING,ENT_QUOTES,'UTF-8'))));
答案 3 :(得分:3)
由于您的HTML格式不正确,您可以选择preg_replace()
方法:
$text = '<p justify;"="">Verslo centrai Lietuvos nekilnojamojo turto plėtros asociacijos konkurse ... </p>';
$content = preg_replace('/<[^>]*>/', '', $text);
var_dump($content);
// string(108) "Verslo centrai Lietuvos nekilnojamojo turto plėtros asociacijos konkurse ... "
在strip_tags() docs上它说:因为strip_tags()实际上并不验证HTML,部分或损坏的标签可能会导致删除比预期更多的文本/数据。
第二个参数也适用于$allowable_tags
。
答案 4 :(得分:1)
从PHP 7.4.0开始,strip_tags()可以接受带有允许标签的数组,
然后这个:
<?php
$html = '<div id="my-div"><p>text<strong><a href="#link"></a></strong></p></div>';
echo strip_tags($html, ['p', 'a']); //accept p and a tags
返回此:
<p>text<a href="#link"></a></p>
请注意,仅删除了不允许的标签。
答案 5 :(得分:0)
这将取代所有的html标签, https://regex101.com/r/jM9oS4/4
preg_replace('/<(|\/)(?!\?).*?(|\/)>/',$replacement,$string);