我是PHP新手,希望有人能帮忙。
有一个网站包含以下 HTML:
<span id="sell_usd_place">1.6640</span>
我的代码如下:
<?php
$data = file_get_contents('http://www.a_bank.com/currency-rates/');
$regex = "#<span id='"sell_usd_place'">(.*?)</span>#";
preg_match($regex,$data,$matchKapitalSell);
var_dump($matchKapitalSell);
echo $matchKapitalSell[0]."<br>";
echo $matchKapitalSell[1];
?>
我期望的是,在输出中我将得到: "<span id="sell_usd_place">1.6640</span>"
,因为它是我设置为模式的。
得到的是(我正在使用 XAMPP 来检查代码):
array(2) { [0]=> string(39) "1.6640" [1]=> string(6) "1.6640" } 1.6640
1.6640array(0) { }
谁能解释一下:
为什么我只得到"1.6640"而不是
<span id="sell_usd_place">1.6640</span>
上面输出中"字符串(39)"中的"39"是什么?
提前谢谢你!!
使用 DOM
而不是正则表达式。正则表达式不适合可靠地解析 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