从字符串中删除

时间:2012-01-12 16:42:04

标签: php

我有以下内容,我需要从字符串循环中删除。

<comment>Some comment here</comment>

结果来自数据库,因此评论标记内的内容不同 谢谢你的帮助。

想出来。以下似乎可以解决问题。

echo preg_replace('~\<comment>.*?\</comment>~', '', $blog->comment);

2 个答案:

答案 0 :(得分:1)

如果移除<comment />标记,则会执行简单的preg_replace()str_replace()

$input = "<comment>Some comment here</comment>";

// Probably the best method str_replace()
echo str_replace(array("<comment>","</comment>"), "", $input);
// some comment here

// Or by regular expression...    
echo preg_replace("/<\/?comment>/", "", $input);
// some comment here

或者如果其中有其他标签,并且您想要除去所有标签,请使用strip_tags()及其可选的第二个参数来指定允许的标签。

echo strip_tags($input, "<a><p><other_allowed_tag>");

答案 1 :(得分:1)

这可能有些过分,但您可以使用DOMDocument将字符串解析为HTML,然后删除标记。

$str = 'Test 123 <comment>Some comment here</comment> abc 456';
$dom = new DOMDocument;
// Wrap $str in a div, so we can easily extract the HTML from the DOMDocument
@$dom->loadHTML("<div id='string'>$str</div>");  // It yells about <comment> not being valid
$comments = $dom->getElementsByTagName('comment');
foreach($comments as $c){
   $c->parentNode->removeChild($c);
}
$domXPath = new DOMXPath($dom);
// $dom->getElementById requires the HTML be valid, and it's not here
// $dom->saveHTML() adds a DOCTYPE and HTML tag, which we don't need
echo $domXPath->query('//div[@id="string"]')->item(0)->nodeValue; // "Test 123  abc 456"

DEMO:http://codepad.org/wfzsmpAW