11

我有字符串:

<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

6 回答 6

19

试着这样说

$content = strip_tags($text);

或者你可以用这样的正则表达式来做到这一点:

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

通过这个$content = strip_tags($text, '<p>');,您允许<p>字符串中的标签。

有关更多信息,请参阅链接http://php.net/manual/en/function.strip-tags.php

于 2013-03-09T09:19:30.073 回答
5

由于 HTML 格式不正确,您可能需要编写自己的正则表达式来删除标签,或者在尝试删除标签之前清理 HTML。

您可以尝试这样做以删除“看起来像”标签的所有内容:

$str = preg_replace("/<.*?>/", " ", $str);
于 2013-03-09T09:18:54.053 回答
4

由于您的 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 ... "

键盘示例

strip_tags() 文档上它说:因为 strip_tags() 实际上并不验证 HTML,部分或损坏的标签可能导致删除比预期更多的文本/数据。

第二个参数也是 for $allowable_tags

于 2013-03-09T09:20:17.213 回答
4

这将删除所有内容 - 标签、ascii、换行符,但纯文本:

strip_tags(preg_replace('/<[^>]*>/','',str_replace(array("&nbsp;","\n","\r"),"",html_entity_decode($YOUR_STRING,ENT_QUOTES,'UTF-8'))));
于 2015-10-15T09:50:35.517 回答
1

这将替换所有 html 标签, https://regex101.com/r/jM9oS4/4

preg_replace('/<(|\/)(?!\?).*?(|\/)>/',$replacement,$string);
于 2016-09-04T18:58:45.293 回答
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>

请注意,仅删除了不允许的标签。

于 2020-05-15T21:45:31.647 回答