Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
查找所有<;预处理>;PHP中的标记(带属性)_Php_Regex_Wordpress_Tags - Fatal编程技术网

查找所有<;预处理>;PHP中的标记(带属性)

查找所有<;预处理>;PHP中的标记(带属性),php,regex,wordpress,tags,Php,Regex,Wordpress,Tags,我一直在关注如何在PHP中检索所有标记 具体来说(在wordpress下),我想找到所有 有什么提示吗 干杯 您最好使用DOM解析器来解析HTML。考虑这个代码: <?php $xmldoc = new DOMDocument(); $xmldoc->load('test.xml'); $xpathvar = new Domxpath($xmldoc); echo $xpathvar->evaluate('count(*//

我一直在关注如何在PHP中检索所有标记

具体来说(在wordpress下),我想找到所有

有什么提示吗


干杯

您最好使用DOM解析器来解析HTML。考虑这个代码:

<?php
        $xmldoc = new DOMDocument();
        $xmldoc->load('test.xml');

        $xpathvar = new Domxpath($xmldoc);

echo $xpathvar->evaluate('count(*//pre)');
?>

您最好使用DOM解析器来解析HTML。考虑这个代码:

<?php
        $xmldoc = new DOMDocument();
        $xmldoc->load('test.xml');

        $xpathvar = new Domxpath($xmldoc);

echo $xpathvar->evaluate('count(*//pre)');
?>

如果数据符合XML,则可以使用XPATH表达式

只是一个很快的例子:


测验
1.
2.
3.
然后是这样一个PHP:

load('test.xml');
$xpathvar=newdomxpath($xmldoc);
echo$xpathvar->evaluate('count(*//pre');
?>

这也适用于html/xml片段。

如果数据符合xml,则可以使用XPATH表达式

只是一个很快的例子:


测验
1.
2.
3.
然后是这样一个PHP:

load('test.xml');
$xpathvar=newdomxpath($xmldoc);
echo$xpathvar->evaluate('count(*//pre');
?>

这也适用于html/xml片段。

一如既往,用正则表达式解析html永远不会解决这个问题。要考虑的事情太多了(标记、间距:

您可以在以下页面轻松找到可用的方法和属性:

  • 属性:
  • 节点:
  • 文件:

与以往一样,用正则表达式解析HTML永远无法解决问题。需要考虑的事情太多了(标记、间距:

您可以在以下页面轻松找到可用的方法和属性:

  • 属性:
  • 节点:
  • 文件:


使用非贪婪匹配器
*?
获取所有
,因此您最终得到的是
/(.*)/
我不明白。我尝试过
“/(.*)/”
但它仍然给我
计数(匹配[0])=0
。完全使用上面的模式。好的,但我仍然通过
回声计数(getPreTags($obj))获得计数0;
,其中函数是我的函数,模式为
/(.*)/
…我通过
count()获得
1
您的函数返回的值与您在上面发布的HTML字符串完全相同。在发布之前,您是否从原始HTML字符串中清除了任何换行符?使用none贪婪匹配器
*?
获取所有
,因此您最终得到的结果是
/(.*)/
我不明白。我尝试过
“/(.*)/”
但它仍然给我
计数(匹配[0])=0
。完全使用上面的模式。好的,但我仍然通过
回声计数(getPreTags($obj));
得到计数0,其中函数是我的模式为
/(.*)/
…我通过
计数()得到
1
您的函数返回的值与您在上面发布的HTML字符串完全相同。在发布之前,您是否从原始HTML字符串中清除了任何换行符?虽然这是一个非常好的解决方案,但我没有完整的DOM,只有wordpress项的内容:(@senseiwa:如上面的示例所示,您不需要使用完整页面(DOM)来使其工作。嗯,那么我的代码中有一些问题:它停止计算。在这里()您可以找到我的代码:
$obj
包含wordpress项。该函数将只打印“开始”,然后它停止。你能在这个函数的开头调用
var_dump($obj);
来显示
$obj
的内容吗?@senseiwa:我看不到你的HTML内容。你能通过编辑你的问题将它粘贴到这里或粘贴到粘贴箱上吗?虽然这是一个很好的解决方案,但我没有整个DOM,只有wordpress项的内容:(@senseiwa:如上面的示例所示,您不需要使用完整页面(DOM)来使其工作。嗯,那么我的代码中有一些问题:它停止计算。在这里()您可以找到我的代码:
$obj
包含wordpress项。该函数将只打印“开始”,然后它就停止了。你能在这个函数的开头调用
var_dump($obj);
来显示
$obj
的内容吗。@senseiwa:我看不到你的HTML内容。你能通过编辑你的问题将它粘贴到这里吗?不幸的是,wordpress不允许我连接到每个方面(我不是那么熟练),但我可以检索项的字符串,它不是真正的DOM…不幸的是,wordpress不允许我连接到每个方面(我不是那么熟练),但我可以检索项的字符串,它不是真正的DOM…
$html = <<< EOF
<a href="http://example.com/foo.htm" class="curPage">Click link1</a> morestuff
<pre>A    B    C</pre>
<a href="http://notexample.com/foo/bar">notexample.com</a> morestuff
<pre id="pre1">X    Y    Z</pre>
<a href="http://example.com/foo.htm">Click link1</a>
<pre id="pre2">1    2    3</pre>
EOF;

// create a new DOM object
$doc = new DOMDocument();
libxml_use_internal_errors(true);
$doc->loadHTML($html); // loads your html
$xpath = new DOMXPath($doc);

// select all pre tags with attributes
$nodelist = $xpath->query("//pre[@*]");

// iterate through selected nodes and print them
for($i=0; $i < $nodelist->length; $i++) {
    $node = $nodelist->item($i);
    var_dump($node->nodeValue);
}
string(11) "X    Y    Z"
string(11) "1    2    3"
<?xml version="1.0" encoding="UTF-8"?>
<html>
  <head>
    <title>Test</title>
  </head>
  <body>
    <pre>1</pre>
    <pre>2</pre>
    <pre>3</pre>
  </body>
</html>
<?php
        $xmldoc = new DOMDocument();
        $xmldoc->load('test.xml');

        $xpathvar = new Domxpath($xmldoc);

echo $xpathvar->evaluate('count(*//pre)');
?>
$dom = new DOMDocument;
$dom->loadHTML($htmlString);
$preTags = $dom->getElementsByTagName('pre');
foreach($preTags as $pre)
{
    echo $pre->nodeValue, PHP_EOL;
    if ($pre->hasAttributes())
    {//if there are attributes
        foreach($pre->attributes as $attribute)
        {
            //do something with attribute
            echo 'Attribute: ', $attribute->name, ' = ', $attribute->value, PHP_EOL;
        }
    }
}