本帖最后由 yyixin 于 2014-03-02 15:12:06 编辑

解决方案 »

  1.   

    var_dump($r['thumb']);
    贴出结果
      

  2.   

    string(85) "http://img2.com.cn/images/2014/038/422/14058002224830.9000001763_100x100.jpg"
      

  3.   

    块代码如: while ($r = $db->fetch_array($result)) {
                $r['adddate'] = timetodate($r['addtime'], 5);
                $r['editdate'] = timetodate($r['edittime'], 5);            if ($lazy && isset($r['thumb']) && $r['thumb']) {
                    $thumbMark = '100x100';
                    if ($list == 1) {
                        $thumbMark = '200x200';
                    }
                    $thumb =$r['thumb'];
                    var_dump($r['thumb']);
                    //echo $r['thumb'].'<br />'; // http://img2.com.cn/images/2014/038/422/14058002224830.9000001763_100x100.jpg
                    //$thumb='http://img2.com.cn/images/2014/038/422/14058002224830.9000001763_100x100.jpg';
                    $r['thumb'] = preg_replace('/_\d+x\d+/', '_' . $thumbMark,$thumb);
                    //echo $r['thumb'].'<br />';
                    
                    
                }            …………
            }
      

  4.   


    if ($list == 1) {
    $thumbMark = '200x200';
    echo 'list:'.$list; // list:1
    }正常
      

  5.   

    没想到刚接触PHP就碰到怪问题了,难道是环境的问题?
      

  6.   

    发现一点端倪了,将正则“/_\d+x\d+/”中间的x去除之后,能正常替换,输出“http://img2.com.cn/images/2014/038/422/14058002224830.9000001763_200x200x100.jpg”;真是太奇怪了,这个“x”到底招谁惹谁了?
      

  7.   

    那为何直接赋值,如:
    $thumb='http://img2.com.cn/images/2014/038/422/14058002224830.9000001763_100x100.jpg';就没有问题。
      

  8.   

    string(85) "http://img2.com.cn/images/2014/038/422/14058002224830.9000001763_100x100.jpg"
    你这个字串只有76个字符,为何是string(85) ?
      

  9.   

    正则这种东西 搞不定的话 只能从源头开始了
    $str = '_100x100.jpg';
    echo preg_replace('/_/', '', $str);
    echo preg_replace('/_\d+/', '', $str);
    echo preg_replace('/_\d+x/', '', $str);
    echo preg_replace('/_\d+x\d+/', '', $str);
    看看哪个有问题 看懂的话就去试试吧...
      

  10.   

    string(85) "http://img2.com.cn/images/2014/038/422/14058002224830.9000001763_100x100.jpg"
    你这个字串只有76个字符,为何是string(85) ?这个真的很奇怪,最后用正则“/_\d+.{6}\d+/” 解决了。可能在php的函数中,“x”被生成的6个,不知名的东西。85-76=9,应该是9个吧,最后三个可能是数字。
      

  11.   


    更正一下,“x”被生成的6个是正确的,string(85) "http://img2.com.cn/images/2014/038/422/14058002224830.9000001763_100x100.jpg",对于后面的字符人为的删除了3个