繁体   English   中英

检测某些标签之间的文本

[英]Detect text between some tags

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

如果您能向我解释如何做/给我我所需要的示例,那就太好了!

我正在尝试检测<script>标记>之间的代码,这意味着如果得到<script type="text/javascript">它也将进行检测。 如果存在<script src="...">则它将不会检测到之间的文本(不应为之间的文本)。

与脚本^相同,如果有<style type="text/css">它也会检测到之间的文本

而且我还想在artitube中检测样式为“在此处检测文本”之间的文本。

我之间要发送文本的最后一个标签是<?php ?> (PHP也可以是大写,因此我不希望正则表达式区分大小写)。

谢谢帮手!!!

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

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

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

var_dump($matches)
?>

正则表达式并非最适合解析HTML。 有充分的理由,请参阅问题。您能否提供一些示例,说明为什么使用正则表达式很难解析XML和HTML?

您将可以更轻松地将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...

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM