XXX网站价:¥99.00XXXX (X代表其他字符)我怎么样匹配这个正则 , 只要有“网站价”出现,我就能取到后面的数字 ,
也是出现 网站价 我能取到 99.00 , 大家帮忙拉。
而且冒号可以是英文冒号或者中文冒号preg_match("??????",$temp,$内容); 想大家帮忙了,我写正则真的很晕,老是写不出来。
也是出现 网站价 我能取到 99.00 , 大家帮忙拉。
而且冒号可以是英文冒号或者中文冒号preg_match("??????",$temp,$内容); 想大家帮忙了,我写正则真的很晕,老是写不出来。
$pattern = "/.*网站价:|:¥(\d+\.\d{2}).*/";
preg_match($pattern, $subject, $matchs);
//$matchs[1] = 99.00就是你希望得到的数据!
$pattern = "/.*网站价:|:¥(\d+\.\d{2}).*/";中间的¥不是必选的,还有数字是是不是必须.00 不是必选的
是不是写这样 $pattern = "/.*网站价:|:¥?(\d+\.\d?).*/";如果不对帮忙指出... 我去测试一下preg_match($pattern, $subject, $matchs);
//$matchs[1] = 99.00就是你希望得到的数据!
return_price($url);
function return_price($url){
$temp=file_get_contents($url);
//$temp = "XXX当当价:¥99.00XXXXX";
$pattern = "/.*当当价:?¥(\d+\.\d{2}).*/";
preg_match($pattern,$temp,$matchs);
echo $matchs[1];
}上面是代码,搜索到页面中的 当当价 然后取出后面价格大家能帮忙想出比较有效率的正则。谢谢大家了,写正则真的很烦。
而关于:
>>测试数据在 $subject = "XXX我家价:¥99.00XXXXX"; 也得到 99.00
>>有错误! 能不能改成更简单点 只要出现 “网站价” 就得到数字,也就是 *网站价*数字.
的问题主要是字符编码的问题,preg只能识别单字节字符,如果想准确的匹配双字节字符,建议使用mb_ereg,具体访问以下链接:
http://www.phpe.net/manual/function.mb-ereg.php
$subject = "XXX网站价:¥99.00XXXXX";
$pattern = "/.*网站价:|:¥(\d+\.\d{2}).*/";
mb_ereg($pattern, $subject, $matchs);
echo $matchs[1];如果用了mb_ereg, 上面的正则就出不来了就麻烦你了,实在是摆不平,你有msn吗给我留言
$url="http://hongqiang.mall.dangdang.com/products/G00000459569.html";return_price($url);
function return_price($url){
$temp=file_get_contents($url);
//echo $temp;
$pattern = "/当当价:([\d|\.]+)/i";
preg_match($pattern,$temp,$matchs);
//print_r($matchs);
echo $matchs[1];
}
$pattern = "/当当价[^\d]*([\d.]+)/";
preg_match($pattern,$temp,$matchs);
echo $matchs[1];