繁体   English   中英

我有 javascript 代码 getElementsByClassName 它将如何在 php 上?

[英]I have the javascript code getElementsByClassName how it will be on php?

我在 javascript 上有这个代码

String(document.getElementsByClassName('ord-total-val')[0].innerText).substr(0,3)

这条鳕鱼抓取 class 元素“ord-total-val”,并将其文本字符串返回给我。 我试试这个:

$classname="blockProduct";
$finder = new DomXPath($doc);
$spaner = $finder->query("//*[contains(@class, '$classname')]");

但我的知识不足以完成它。 你能帮我在 php 上写下这个笔画吗?

公平地说,您的代码实际上是完整的,并且当我将它与基本测试用例结合使用时,它似乎可以正常工作。

<?php


    $strhtml="<!DOCTYPE html>
<html lang='en'>
    <head>
        <meta charset='utf-8' />
        <title></title>
        <style></style>
        <script></script>
    </head>
    <body>
        <p>wibble wobble</p>
        <div class='blockProduct'>whoohoo! Some text</div>
        <p>lorem ipsum dolor solit...</p>
        <span class='blockProduct'>and even more text in a different HTML element</span>
    </body>
</html>";


    $className='blockProduct';


    $dom=new DOMDocument;
    $dom->loadHTML($strhtml);
    
    $xp=new DOMXPath($dom);
    $expr='//*[ contains( @class, "'.$className.'" ) ]';
    
    $col=$xp->query( $expr );
    if( $col && $col->length > 0 ){
        foreach( $col as $node ){
            $text=$node->nodeValue;
            $substr=substr($text,0,3);
            
            echo $substr . '<br />';
        }
    }
?>

鉴于上面的 HTML 源代码,这将是 output:

who
and

使用您的代码,但稍作修改以使用 XPath object 已经创建, $xp

$spaner = $xp->query("//*[contains(@class, '$className')]");

这给出了一个nodelist ,因此您需要遍历此nodelist以显示内容。

foreach($spaner as $span)echo $span->nodeValue;

暂无
暂无

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

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