关于preg_replace非常不解的事情? 本帖最后由 yyixin 于 2014-03-02 15:12:06 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 var_dump($r['thumb']);贴出结果 string(85) "http://img2.com.cn/images/2014/038/422/14058002224830.9000001763_100x100.jpg" 块代码如: 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 />'; } ………… } if ($list == 1) {$thumbMark = '200x200';echo 'list:'.$list; // list:1}正常 没想到刚接触PHP就碰到怪问题了,难道是环境的问题? 发现一点端倪了,将正则“/_\d+x\d+/”中间的x去除之后,能正常替换,输出“http://img2.com.cn/images/2014/038/422/14058002224830.9000001763_200x200x100.jpg”;真是太奇怪了,这个“x”到底招谁惹谁了? 那为何直接赋值,如:$thumb='http://img2.com.cn/images/2014/038/422/14058002224830.9000001763_100x100.jpg';就没有问题。 string(85) "http://img2.com.cn/images/2014/038/422/14058002224830.9000001763_100x100.jpg"你这个字串只有76个字符,为何是string(85) ? 正则这种东西 搞不定的话 只能从源头开始了$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);看看哪个有问题 看懂的话就去试试吧... 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个吧,最后三个可能是数字。 更正一下,“x”被生成的6个是正确的,string(85) "http://img2.com.cn/images/2014/038/422/14058002224830.9000001763_100x100.jpg",对于后面的字符人为的删除了3个 求助!PHP执行的相关问题! php最简单的问题,只耽误高手1分钟时间,进来指点下。。。 cakephp路径问题 php中,输入一个地址,显示另一网站的内容,并地址还要是我刚输 入的地址,在线等 如何在function里操作pdo呀 页面间传值问题在线等 win下开发php的汉字问题,紧急~ 关于header的问题 一个常见的错误。 MYSQL的 in 语句,如果数组太大,是否影响性能; session,获取的字符串值,总是得到images类型 在神来帮我看看这是哪里错了!!!!我是菜鸟
贴出结果
$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 />';
} …………
}
if ($list == 1) {
$thumbMark = '200x200';
echo 'list:'.$list; // list:1
}正常
$thumb='http://img2.com.cn/images/2014/038/422/14058002224830.9000001763_100x100.jpg';就没有问题。
你这个字串只有76个字符,为何是string(85) ?
$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);
看看哪个有问题 看懂的话就去试试吧...
你这个字串只有76个字符,为何是string(85) ?这个真的很奇怪,最后用正则“/_\d+.{6}\d+/” 解决了。可能在php的函数中,“x”被生成的6个,不知名的东西。85-76=9,应该是9个吧,最后三个可能是数字。
更正一下,“x”被生成的6个是正确的,string(85) "http://img2.com.cn/images/2014/038/422/14058002224830.9000001763_100x100.jpg",对于后面的字符人为的删除了3个