php 预匹配解析 html
php preg match parse html
我正在尝试从字符串中获取 1,9110:
<span class="c_name">€ EUR</span> <span class="c_value">1,9110</span>
我的代码是:
// EUR //
if(preg_match('/<span class="c_name">€ EUR<\/span> <span class="c_value">(.*?)<\/span>/mis', $rawresult, $result))
{
$banks['access']['sale']['EUR'] = $result[1];
} else {
$banks['access']['sale']['EUR'] = false;
}
var_dump($banks);
// EUR //
但是这段代码不起作用
你不需要正则表达式,你可以使用 filter_var
和一个特定的标志来允许数千
echo filter_var('<span class="c_name">€ EUR</span> <span class="c_value">1,9110</span>', FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_THOUSAND);
您的正则表达式在欧元符号上崩溃。
尝试像这样逃避它:
if(preg_match('/<span class="c_name">\x{20AC} EUR<\/span> <span class="c_value">(.*?)<\/span>/misu', $rawresult, $result))
'<span class="c_value">(.*?)<\/span>/s';
或尝试
if(preg_match('/<span class="c_name">.*?EUR<\/span> <span class="c_value">(.*?)<\/span>/mis', $rawresult, $result))
我正在尝试从字符串中获取 1,9110:
<span class="c_name">€ EUR</span> <span class="c_value">1,9110</span>
我的代码是:
// EUR //
if(preg_match('/<span class="c_name">€ EUR<\/span> <span class="c_value">(.*?)<\/span>/mis', $rawresult, $result))
{
$banks['access']['sale']['EUR'] = $result[1];
} else {
$banks['access']['sale']['EUR'] = false;
}
var_dump($banks);
// EUR //
但是这段代码不起作用
你不需要正则表达式,你可以使用 filter_var
和一个特定的标志来允许数千
echo filter_var('<span class="c_name">€ EUR</span> <span class="c_value">1,9110</span>', FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_THOUSAND);
您的正则表达式在欧元符号上崩溃。 尝试像这样逃避它:
if(preg_match('/<span class="c_name">\x{20AC} EUR<\/span> <span class="c_value">(.*?)<\/span>/misu', $rawresult, $result))
'<span class="c_value">(.*?)<\/span>/s';
或尝试
if(preg_match('/<span class="c_name">.*?EUR<\/span> <span class="c_value">(.*?)<\/span>/mis', $rawresult, $result))