如何在某些html标签中查找字符串并使用正则表达式从结果中删除这些标签?

时间:2014-11-18 15:51:57

标签: html regex

我需要在HTML页面中找到一些字符串。所以该页面包含这个片段:

<div class="member">
    <span>
        <strong>Mr.</strong>
    </span>
    <span>
       <strong>Name</strong>
    </span>
    <span>
       <strong>Surname</strong>
    </span>
</div>

这不是cource页面的完整代码。我只需要使用正则表达式提取字符串Mr. Name Surname

因此,如果我使用<strong>[\w.]*</strong>,它会找到:

[0] : <strong>Mr.</strong>
[1] : <strong>Name</strong>
[2] : <strong>Surname</strong>

以下是3个问题。

1)结果包含带标签的字符串,我需要从结果中排除标签。

2)正则表达式可以在页面上找到所有<strong>条目,而不仅仅是在这个div中。

3)我应该像这样Mr. Name Surname连接这些字符串。是否可以只使用正则表达式?

如何解决我的表情?

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。 首先,我得到这个div的全部内容:

/(?<=<div\sclass\=\"member\">)([\s\S]*)(?=<\/div>)/gmi

所以,现在我有:

<span>
    <strong>Mr.</strong>
</span>
<span>
   <strong>Name</strong>
</span>
<span>
   <strong>Surname</strong>
</span>

然后我只删除所有标签,多余空格和换行符:

$out0 = trim(preg_replace('/\s+/', ' ', strip_tags($inputstr)));

其中$inputstr是我的div内容。

这种方式并不普遍,但它解决了我的问题。