strip_tags保持<a> but stripping its attributes</a>

时间:2013-04-17 16:26:45

标签: php formatting string-formatting strip-tags

正如标题所说,当我使用strip_tags($text, "<a>...<others>")并向$text插入超链接时,我的输出为<a>而不是<a href='...'>。我怎样才能解决这个问题,或strip_tags对此不够灵活?

谢谢!

$text = ucfirst($text);
$text = preg_replace('/\v+|\\\r\\\n/', '<br />', $text);
$allow = '<p><br><ul><ol><li><strong><img><em><a>';
$text = strip_tags($text, $allow);

// now, remove any suspect tags, etc.
preg_match_all("/<([^>]+)>/i", $allow, $allTags, PREG_PATTERN_ORDER);

输入$text是:

<p>Lorum ipsum &nbsp;<a href="http://www.test.com">This is a test link</a>.</p>

2 个答案:

答案 0 :(得分:0)

strip_tags删除所有html元素或<>附带的任何内容。

来自manual

  

strip_tags - 从字符串中删除HTML和PHP标记

示例:

$text = '<p>Test paragraph.</p><!-- Comment --> <a href="#fragment">Other text</a>';

输出:

Test paragraph. Other text

答案 1 :(得分:0)

它应该完全像你想要的那样工作。

$text = '<a href="http://www.someplace.com">link</a> <others>stuff</others>';
echo strip_tags($text,"<a>");

我留下了完整的<a>标记:

<a href="http://www.someplace.com">link</a> stuff

工作示例:http://3v4l.org/j1uE1

更新:使用您在更新的问题中发布的代码,我在此处运行它仍然提供完整的<a>标记输出。这些属性没有被删除。

http://3v4l.org/tFQ4l