我正在尝试检测3到4个标签之间的文本,我不知道如何使用PHP。 我知道我应该使用正则表达式,但这对我来说太难了:X
如果你能解释我该怎么做/给我一些我需要的例子,那就太棒了!
我正在尝试检测<script>
代码&gt;之间的代码这意味着如果我得到<script type="text/javascript">
它也会检测到。如果有<script src="...">
则它不会检测到之间的文本(不应该是文本之间)。
与脚本相同^如果<style type="text/css">
它将检测到
我还想检测style =“在这里检测文本”artitube之间的文字。
我要在其间发送文字的最后一个标记是<?php ?>
。 (php也可以是大写的,所以我不希望正则表达式区分大小写。)
感谢帮助者!!!
答案 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...
}