忽略preg_match上的html标记

时间:2013-09-02 12:28:01

标签: php regex domdocument

我使用以下html

删除网站
<a class="name" href="/link" data-hovercard-id="charshere"><span class="highlighted">War</span> World</a> 

<a class="name" href="/link" data-hovercard-id="charshere"> World of <span class="highlighted">fun</span></a> 

<a class="name" href="/link" data-hovercard-id="charshere">Save the<br>world</a> 

<a class="name" href="/link" data-hovercard-id="charshere">world of warcraft</a> 

使用此代码我获得链接的值

preg_match_all('/<a class="name" href=".*?" data-hovercard-id=".*?">(.*)<\/a>/i', $file_string, $titles);

但结果是

<span class="highlighted">War</span> World
 World of <span class="highlighted">fun</span>
Save the<br>world
world of warcraft

如何忽略其中的html标签?所以它看起来像这样

 War World
 World of fun
 Save the world
 world of warcraft

DomDocument可能会更好。谢谢。一直在尝试使用domDocument,但我不熟悉如何使用它的xquery。

3 个答案:

答案 0 :(得分:3)

使用strip_tags()。这是一个例子:

$html = <<<EOF
<span class="highlighted">War</span> World
 World of <span class="highlighted">fun</span>
Save the<br>world
world of warcraft
EOF;

echo strip_tags($html);

输出:

War World
 World of fun
Save theworld
world of warcraft

答案 1 :(得分:0)

获取文字后,只需删除标签:

<?php
$string = '<span class="highlighted">War</span> World
 World of <span class="highlighted">fun</span>
Save the<br>world
world of warcraft';
$convert = preg_replace('/<.*?>/','', $string);
print $convert;

打印:

War World
 World of fun
Save theworld
world of warcraft

答案 2 :(得分:0)

您可以在匹配链接的字符串后删除HTML标记。例如

$str = preg_replace('/<[^<]+>/', '', $html);