【发布时间】:2014-11-14 11:44:46
【问题描述】:
<?php
$data = file_get_contents('https://www.airbnb.com/s/Prague~Prague-1--Czech-Republic?source=bb');
$regex = '/<span class=\"h3 price-amount\">(.*)span>/';
preg_match_all($regex,$data,$match);
echo 'TOTAL: ' . array_sum($match[1]); //Incorrect
echo 'Minimum: ' . min($match[1]); //Incorrect
echo 'Maximum: ' . max($match[1]); //Incorrect
echo 'Average: ' . array_sum($match[1]) / count($match[1]); //Incorrect
echo 'Number of properties: ' . count($match[1]); //OK
var_dump($match[1]);结果:
array(18) {
[0]=> string(4) "58
string(4) "42
string(5) "103
string(4) "52
string(4) "46
string(5) "109
string(4) "89
string(4) "55
string(4) "95
string(5) "110
string(5) "345
string(4) "76
string(4) "45
string(4) "76
string(5) "101
string(4) "83
string(4) "77
string(4) "58
var_dump($match[0]); 结果(我也尝试过 [0] 用于 array_sum,但它始终为 0:
array(18) {
[0]=> string(39) "62"
[1]=> string(39) "42"
[2]=> string(39) "52"
[3]=> string(39) "54"
[4]=> string(39) "58"
[5]=> string(39) "46"
[6]=> string(39) "89"
[7]=> string(40) "122"
[8]=> string(40) "103"
[9]=> string(39) "55"
[10]=> string(39) "76"
[11]=> string(39) "69"
[12]=> string(39) "90"
[13]=> string(40) "110"
[14]=> string(39) "24"
[15]=> string(39) "38"
[16]=> string(39) "50"
[17]=> string(39) "23"
}
为什么我不知道出了什么问题,在我看来,数组从正则表达式匹配中返回字符串数字,但数组计算不起作用。
print_r($match[0]);
Array (
[0] => 46
[1] => 58
[2] => 103
[3] => 42
[4] => 52
[5] => 62
[6] => 38
[7] => 60
[8] => 77
[9] => 76
[10] => 69
[11] => 54
[12] => 89
[13] => 130
[14] => 50
[15] => 76
[16] => 167
[17] => 110
)
【问题讨论】:
-
我尝试了您的代码,但这不起作用,因为您的数组中有错误的值:
11387</ -
@lolka_bolka 嗯,你是怎么发现的?是的,正则表达式看起来缺少一些东西