如何在PHP中的html标签之间搜索单词?

时间:2012-03-28 14:31:11

标签: php html regex

如何在html标签之间搜索单词?说我有给定的字符串:

<span style="font-weight: bold;">
    <font size="4">Bearings<br /><br /></font>
</span>

<span style="font-weight: bold;">
    <font size="4">
        Scale Drawing &amp; Error in Measurement<br /><br />
    </font>
</span>    

<p align="left" class="MsoNormal" style="text-align: left;">
    <b/>
    <span lang="EN-GB">
        <font size="4" class="Apple-style-span">
            Solving Equations inc. Quadratic Formula
        </font>
    </span>
    </b> 
</p>

如何搜索标题:测量和解决方程式中的轴承,比例绘制和放大误差。二次公式?还要记住,标题之前和之后的html标签数量是动态的,意味着它们可以是任何东西,并且可以有任何数量。此外,标题本身是动态的,我不知道它们实际上是什么。我正在寻找他们。但是,我知道它们位于字符串的开头,这意味着我可以执行诸如搜索双引号然后使用直角括号“&gt;然后使用通配符*然后使用右括号和正斜杠{{ 1}}

</

请注意,我不知道正则表达式,我只是说我可以对类似的东西进行搜索,因为"> * </ 的第一次出现意味着标题就在此之前。

3 个答案:

答案 0 :(得分:4)

您可以使用strip_tags从字符串中删除所有HTML,然后搜索文本。

$data = '<h1 class="refname">strip_tags</h1>
<p class="para rdfs-comment">
   This function tries to return a string with all NUL bytes, HTML and PHP tags stripped
   from a given <em><code class="parameter">str</code></em>.  It uses the same tag stripping
   state machine as the <span class="function"><a href="function.fgetss.php" class="function">fgetss()</a></span> function.
  </p>';

print strip_tags($data);

以上将输出

  

strip_tags

     

此函数尝试返回一个包含所有NUL字节的字符串,HTML和PHP标记被剥离      来自给定的str。它使用相同的标签剥离
     状态机作为fgetss()函数。

答案 1 :(得分:1)

我建议您使用html解析器,例如:http://simplehtmldom.sourceforge.net/否则您将总是错过正则表达式中的某些情况。

答案 2 :(得分:1)

您是否尝试在运行时执行此操作?您可以使用javascript和DOM innerHTML属性。你说HTML是动态的,可能会有所不同,但如果它们总是在标签中,那么这样的东西可能适合你。

<script type="text/javascript">
    txt=document.getElementsByTagname("span").innerHTML;
    document.write(txt);
</script>

在此处查看更多内容:http://www.w3schools.com/htmldom/dom_methods.asp