检测某些标签之间的文本

时间:2011-02-06 14:13:29

标签: php regex tags

我正在尝试检测3到4个标签之间的文本,我不知道如何使用PHP。 我知道我应该使用正则表达式,但这对我来说太难了:X

如果你能解释我该怎么做/给我一些我需要的例子,那就太棒了!

我正在尝试检测<script>代码&gt;之间的代码这意味着如果我得到<script type="text/javascript">它也会检测到。如果有<script src="...">则它不会检测到之间的文本(不应该是文本之间)。

与脚本相同^如果<style type="text/css">它将检测到

之间的文本

我还想检测style =“在这里检测文本”artitube之间的文字。

我要在其间发送文字的最后一个标记是<?php ?>。 (php也可以是大写的,所以我不希望正则表达式区分大小写。)

感谢帮助者!!!

2 个答案:

答案 0 :(得分:3)

使用正则表达式,您可以编写如下内容:

<?php
$html = <<<EOF
<script type="text/javascript">
    function xyz() { alert('some alert'); }
</script>
EOF;

preg_match('/<script.*>(.*)<\/script>/sU', $html, $matches);

var_dump($matches)
?>

答案 1 :(得分:2)

正则表达式不适合解析HTML。有充分理由,请参阅问题Can you provide some examples of why it is hard to parse XML and HTML with a regex?

您可以更轻松地将HTML加载到DOM XML类中,然后您可以执行XPath查询以提取所需的标记。

例如,尝试这样的方法来获取所有没有src属性的<script>标签......

$doc = new DOMDocument();
$doc->loadHTMLFile("myfile.html");

$xpath=new DOMXPath($doc);

//find script elements which don't have a src attribute
$scriptNodes=$xpath->query("script[not(@src)]");
foreach ($scriptNodes as $scriptNode) {

    //do something here...

}