Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/279.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 - Fatal编程技术网

PHP中的正则表达式返回的不是预期的结果

PHP中的正则表达式返回的不是预期的结果,php,regex,Php,Regex,我是PHP新手,希望有人能帮我 有一个网站包含以下HTML: <span id="sell_usd_place">1.6640</span> 请任何人解释一下: 为什么我只得到“1.6640”而没有 1.6640 上面输出的“字符串(39)”中的“39”是什么 提前谢谢你 使用而不是正则表达式。正则表达式不适合可靠地解析HTML 例如: $html = file_get_contents('http://www.a_bank.com/currency-rates/');

我是PHP新手,希望有人能帮我

有一个网站包含以下HTML:

<span id="sell_usd_place">1.6640</span>
请任何人解释一下:

  • 为什么我只得到“1.6640”而没有
    1.6640

  • 上面输出的“字符串(39)”中的“39”是什么

  • 提前谢谢你

    使用而不是正则表达式。正则表达式不适合可靠地解析HTML

    例如:

    $html = file_get_contents('http://www.a_bank.com/currency-rates/');
    $doc = new DOMDocument();
    $doc->loadHTML($html);
    $span = $doc->getElementById('sell_usd_place');
    $value = $span->nodeValue;
    
    echo $value; # 1.6640
    

    对于解析xml/html,您需要使用库来构建html/xml dom树,对于解析,例如此库1)您只看到呈现/格式化的文本,2)字符串(39)=长度
    1.6640
    。元素0是整个匹配项,元素1是第一个
    (…)
    捕获的子字符串。字符串(39)表示字符串的长度为39。我有一种直觉,你把它扔了,然后在网络浏览器中查看。看看源代码。web浏览器将对您隐藏HTML标记。@Naumov谢谢!我去看看。
    array(2) { [0]=> string(39) "1.6640" [1]=> string(6) "1.6640" } 1.6640
    1.6640array(0) { }
    
    $html = file_get_contents('http://www.a_bank.com/currency-rates/');
    $doc = new DOMDocument();
    $doc->loadHTML($html);
    $span = $doc->getElementById('sell_usd_place');
    $value = $span->nodeValue;
    
    echo $value; # 1.6640