php中的正则表达式出错
我需要有人帮我做一个常规的表达。我想从(官方价格)和非正式价格)获取数据 我用这个=php中的正则表达式出错,php,regex,Php,Regex,我需要有人帮我做一个常规的表达。我想从(官方价格)和非正式价格)获取数据 我用这个= $data = file_get_contents("http://www.ambito.com/economia/mercados/"); $cadena= '/(?:<span class="m2">)?(.*)(?:<\/span><span class="m3">?(.*)<\/span><span class="m4">)?(.*)(?:
$data = file_get_contents("http://www.ambito.com/economia/mercados/");
$cadena= '/(?:<span class="m2">)?(.*)(?:<\/span><span class="m3">?(.*)<\/span><span class="m4">)?(.*)(?:<\/span>)/';
if ( preg_match($cadena, $data , $cap ) )
$data=文件获取内容(“http://www.ambito.com/economia/mercados/");
$cadena='/(?:)(.*)(?:?(.*))(.*)(.*)(?:)/';
if(预匹配($cadena,$data,$cap))
我在if中出错,因为我找不到匹配项
编辑:
多谢各位。现在我阅读了DOM的文档,然后解决了代码的问题(我不知道这是否是最好的方法)
$domain=http://www.ambito.com/economia/mercados/';
$html=file\u get\u html($domain);
$ret_m3=$html->find('span[class=m3]');
$ret_m4=$html->find('span[class=m4]”);
echo$ret_m3[0]。“
”;
echo$ret_m4[0]。“
”;
echo$ret_m3[1]。“
”;
echo$ret_m4[1]。“
”;
试试这个:
$data = file_get_contents("http://www.ambito.com/economia/mercados/");
$cadena= '#<span class="m2">([^<]*)</span>\s*<span class="m3">([^<]*)</span>\s*<span class="m4">([^<]*)</span>#';
if ( preg_match($cadena, $data , $cap ) ) {
var_dump($cap);
}
$data=文件获取内容(“http://www.ambito.com/economia/mercados/");
$cadena='#([^正如其他人所评论的,您应该使用DOM解析器而不是正则表达式来从HTML获取信息。无论如何,这里是获取Dólar(官方)值的方法,另一种方法应该与此方法一样简单:
/\<span class=\"m2"\>(?:.*)\<\/span>\s*\<span class=\"m3"\>(.+?)\<\/span\>\s*\<span class=\"m4"\>(.+?)\<\/span\>/
/\(?:.*)\\s*\(.+?)\\s*\(.+?)\/
第1组和第2组应该是您要查找的值。为什么不使用?我不使用DOM,因为我不知道如何使用它;D如果您能帮助我获得代码plz。@user1736258好的!
array(4) {
[0]=>
string(133) "<span class="m2">Dólar (Oficial)</span>
<span class="m3">7,960</span>
<span class="m4">8,010</span>"
[1]=>
string(15) "Dólar (Oficial)"
[2]=>
string(5) "7,960"
[3]=>
string(5) "8,010"
}
/\<span class=\"m2"\>(?:.*)\<\/span>\s*\<span class=\"m3"\>(.+?)\<\/span\>\s*\<span class=\"m4"\>(.+?)\<\/span\>/