PHP函数在给定的html中删除没有HTML标记的String

时间:2013-03-27 04:35:09

标签: php html

我有一个HTML代码:

<a href="#">foo</a>bar is dummy string<p>hello</p>

我希望输出

<a href="#">foo</a><p>hello</p>

我正在搜索PHP代码以获得上述结果。仅过滤html嵌入字符串以进行输出。我知道strip_tags()函数会删除html标签并仅输出字符串。

3 个答案:

答案 0 :(得分:2)

试试这个

$html = <<<_HTML
<!DOCTYPE html>
<html>
<head><title>Test</title></head>
<body>
<a href="#">foo</a>bar is dummy string<p>hello</p>
</body>
</html>
_HTML;

$doc = new DOMDocument();
$doc->loadHTML($html);

$xpath = new DOMXPath($doc);
$textNodes = $xpath->query('/html/body/a/following-sibling::text()[1]');
if ($textNodes->length) {
    $node = $textNodes->item(0);
    $node->parentNode->removeChild($node);
}
echo '<pre>', htmlspecialchars($doc->saveHTML()), '</pre>';

结果是

<!DOCTYPE html>
<html><head><title>Test</title></head><body>
<a href="#">foo</a><p>hello</p>
</body></html>

在这里演示 - http://codepad.viper-7.com/akDqkj

答案 1 :(得分:0)

让我们把你的html代码放在$ html

$string = strip_tags($html); 
$final = str_replace($string , "", $html); 

它可能会帮助你。有人回答相同,不幸的是他已删除。

由于

答案 2 :(得分:-1)

使用regex执行此类替换......