本帖最后由 jimx92 于 2011-12-25 14:01:58 编辑

解决方案 »

  1.   

    $a = 'Gifts & Party Supplies';
    echo $a = strval(preg_replace("/[[:punct:]]/","",strtolower($a)));// 把&等标点符号去掉,得到的是 gifts  party supplies 注意:gifts 后面有两个空格
    而你测试成功的是 gifts party supplies 注意:gifts 后面只有一个空格这就不难理解了吧
      

  2.   


    不是这个问题,楼主是(preg_replace("/[[:punct:]]/","",strtolower($a))),把标点换成"",又不是
    " ",怎么会多一个空格,而且我输出了两个sql,的确是一样的
    $a = 'Gifts  Party Supplies';
    $a = strval(preg_replace("/[[:punct:]]/","",strtolower($a)));// 把&等标点符号去掉,并转为小写 $a='gifts party supplies';
    /*echo $a;*/
    $master_category_id_sql1 = "select categories_id from categories_description where lower(categories_name)='". $a ."' ";
    echo $master_category_id_sql1.'<br>';$master_category_id_sql2 = "select categories_id from categories_description where lower(categories_name)='gifts party supplies'  ";
    echo $master_category_id_sql2.'<br>';两个sql一摸一样。真是太奇怪了。帮楼主顶帖,我也不知道是怎么回事,求高手指教。