Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/227.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.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 preg_match out输出数组而不输出内容_Php_Regex - Fatal编程技术网

Php preg_match out输出数组而不输出内容

Php preg_match out输出数组而不输出内容,php,regex,Php,Regex,我试图解析一个特定div标记内部的信息,但由于某种原因,它一直输出数组,没有信息,我一辈子都搞不懂 这就是我所拥有的 $html = file_get_html('http://finance.yahoo.com/q/hp?s=^DJI&a=05&b=4&c=2012&d=06&e=6&f=2012&g=d'); $i=0; $classes = array('red', 'blue', 'yellow', 'green', 'black'

我试图解析一个特定div标记内部的信息,但由于某种原因,它一直输出数组,没有信息,我一辈子都搞不懂

这就是我所拥有的

$html = file_get_html('http://finance.yahoo.com/q/hp?s=^DJI&a=05&b=4&c=2012&d=06&e=6&f=2012&g=d');
$i=0;
$classes = array('red', 'blue', 'yellow', 'green', 'black', 'purple', 'grey');
$ci = 0;
foreach ($html->find('.yfnc_datamodoutline1 .yfnc_tabledata1') as $element){

$symbols = $element->outertext;
$hp = '<div class="'.$classes[$ci].'">'.$symbols.'</div>';
$ci++;
if($ci == count($classes)) $ci = 0;
preg_match_all("'<div class=\"black\">([^<]*)</div>'si", $hp, $match);

print_r($hp);
//print_r($match);

非常感谢您的帮助,您也可以运行代码,只需打开索引文件。

您忘记了/before si,需要删除单引号,因为它们是表达式的一部分

preg_match_all("<div class=\"black\">([^<]*)</div>/si", $hp, $match);
preg\u match\u all(([^我会写它:

if ($classes[$ci] === 'black') {
    echo $symbols;
}
preg_match_all(“/(.*)/si”,$hp,$match);

我不确定你到底想做什么,但我认为你根本不需要在这里使用regex。在你循环的数据中,你已经知道你是否有class
black

在你的循环中,你不能这样做吗


您也可以轻松地将其存储在数组中。

右键单击->查看源代码。现在呢?基本说明:在
print\r($match)页面;
。用鼠标或其他喜爱的定点设备右键单击,选择“查看源代码”、“源代码”或您选择的浏览器中最接近的内容,然后重新检查那里的输出。我不明白我应该查找什么,但输出看起来像此数组([0]=>数组([0]=>数组)[1]=>Array([0]=>Array))与上面的ID非常相似,这就是重点。所有类型的
div
都匹配。但是,我怀疑与其使用regexing,不如使用regexing。这是因为一个url(不是另一个url)()…在我看来似乎是合乎逻辑的…是的,这并不能解决它…只是更多的数组=)
只是用作分隔符,而不是
/
。非正统的是,但没有错。这仍然给了我一组数组,但它返回的内容也带有div,而不仅仅是div中的数字
preg_match_all("<div class=\"black\">([^<]*)</div>/si", $hp, $match);
  $html = '<div class="red">Jul 6, 2012</div>
<div class="blue">12,889.40</div>
<div class="yellow">12,889.40</div>
<div class="green">12,702.99</div>
<div class="black">12,772.47</div>
<div class="purple">967,600</div>
<div class="grey">12,772.47</div>
<div class="red">Jul 5, 2012</div>
<div class="blue">12,941.85</div>
<div class="yellow">12,961.30</div>
<div class="green">12,852.24</div>
<div class="black">12,896.67</div>
<div class="purple">978,000</div>
<div class="grey">12,896.67</div>';

  preg_match_all("/<div class=\"black\">([^<]*)<\/div>/i", $html, $matches);
  echo "<pre>";
  print_r($matches[1]);

?>
preg_match_all("/<div class=\"black\">(.*)<\/div>/si", $hp, $match);
if ($classes[$ci] === 'black') {
    echo $symbols;
}