XXX网站价:¥99.00XXXX (X代表其他字符)我怎么样匹配这个正则 , 只要有“网站价”出现,我就能取到后面的数字 , 
也是出现 网站价  我能取到 99.00 , 大家帮忙拉。
而且冒号可以是英文冒号或者中文冒号preg_match("??????",$temp,$内容); 想大家帮忙了,我写正则真的很晕,老是写不出来。

解决方案 »

  1.   

    $subject = "XXX网站价:¥99.00XXXXX";
    $pattern = "/.*网站价:|:¥(\d+\.\d{2}).*/";
    preg_match($pattern, $subject, $matchs);
    //$matchs[1] = 99.00就是你希望得到的数据!
      

  2.   

    $subject = "XXX网站价:¥99.00XXXXX";
    $pattern = "/.*网站价:|:¥(\d+\.\d{2}).*/";中间的¥不是必选的,还有数字是是不是必须.00 不是必选的
    是不是写这样  $pattern = "/.*网站价:|:¥?(\d+\.\d?).*/";如果不对帮忙指出... 我去测试一下preg_match($pattern, $subject, $matchs);
    //$matchs[1] = 99.00就是你希望得到的数据!
      

  3.   

    测试数据在  $subject = "XXX我家价:¥99.00XXXXX";  也得到 99.00有错误! 能不能改成更简单点 只要出现 “网站价”  就得到数字,也就是 *网站价*数字. 帮忙改瞎
      

  4.   

    我把我的需求贴出来好了,$url="http://hongqiang.mall.dangdang.com/products/G00000459569.html";
    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];
    }上面是代码,搜索到页面中的  当当价  然后取出后面价格大家能帮忙想出比较有效率的正则。谢谢大家了,写正则真的很烦。
      

  5.   

    以上的正则表达式没有多大的出入,只需小部分修改即可!
    而关于:
    >>测试数据在  $subject = "XXX我家价:¥99.00XXXXX";  也得到 99.00
    >>有错误! 能不能改成更简单点 只要出现 “网站价”  就得到数字,也就是 *网站价*数字.
    的问题主要是字符编码的问题,preg只能识别单字节字符,如果想准确的匹配双字节字符,建议使用mb_ereg,具体访问以下链接:
    http://www.phpe.net/manual/function.mb-ereg.php
      

  6.   


    $subject = "XXX网站价:¥99.00XXXXX";
    $pattern = "/.*网站价:|:¥(\d+\.\d{2}).*/";
    mb_ereg($pattern, $subject, $matchs);
    echo $matchs[1];如果用了mb_ereg, 上面的正则就出不来了就麻烦你了,实在是摆不平,你有msn吗给我留言
      

  7.   

    <?
    $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];
    }
      

  8.   

    $temp = "XXX当当价:¥99.00XXXXX";
    $pattern = "/当当价[^\d]*([\d.]+)/";
    preg_match($pattern,$temp,$matchs); 
    echo $matchs[1];