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,我需要有人帮我做一个常规的表达。我想从(官方价格)和非正式价格)获取数据 我用这个= $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\>/