我有一个 preg_match_all 模式来只捕捉带有货币符号的数字,或者如果没有符号,只捕捉数字。但是,除了 $ 符号(不包括符号)之外的任何东西都会失败(不返回任何错误)。
这是我正在尝试的:
include 'simple_html_dom.php';
$html = file_get_html($url);
// Find price if added our code
$ret = $html->find('.price');
$pattern = '/\p{Sc}\s*\d{1,3}(?:,\d{3})*(?:\.\d+)?/u';
以下是 simple_html_dom 可能返回的示例以及它们是否有效 - 它可能是以下之一
$ret[0] = '<span class="price">100</span>'; // this returns null
$ret[0] = '<span class="price">£100</span>'; // this returns null
$ret[0] = '<span class="price">€100</span>'; // this returns null
$ret[0] = '<span class="price">$100</span>'; // this works correctly and returns $100
preg_match_all($pattern, $ret[0], $matches);
echo $matches[0][0];
任何想法为什么?