<?
$str1 = "  市场市场。";
$str1 = preg_replace('/ | /is','', $str1);
echo $str1.'<br>';$str2 = " 疾病。";
$str2 = preg_replace('/ | /is','', $str2);
echo $str2;
?>

解决方案 »

  1.   

    <?
    $str1 = "  市场市场。";
    $str1 = preg_replace('/  /is','', $str1);
    echo $str1.'<br>';$str2 = " 疾病。";
    $str2 = preg_replace('/  /is','', $str2);
    echo $str2;
    ?>
      

  2.   

    preg_replace('/ /is','', $str2);
                   ↓
                这个是什么空格?2个空格还是1个空格?
      

  3.   

    to  unijune(uni) 是一个中文全角空格感谢大家参与
      

  4.   

    用Multi-Byte String Functions函数库阿
    不过要要在配置文件中更改支持这个功能mb_ereg_replace
    (4.2.0 - 4.3.2 only)mb_ereg_replace -- Replace regular expression with multibyte support
    Description
    string mb_ereg_replace ( string pattern, string replacement, string string [, array option])
      

  5.   

    造成这一现象的原因是:
    “场。”的内码是B3 A1 A1 A3,其中A1 A1被替换掉后,就显示内码为B3 A3的“常”
    “病。”的内码是B2 A1 A1 A3,其中A1 A1被替换掉后,就显示内码为B2 A3的“玻”
      

  6.   

    楼主我这个不行吗??
    <?
    $str1 = "  市场市场。";
    $str1 = preg_replace('/  /is','', $str1);
    echo $str1.'<br>';$str2 = " 疾病。";
    $str2 = preg_replace('/  /is','', $str2);
    echo $str2;
    ?>
      

  7.   

    echo ord(' ');
    echo ord('。');这个中文的ASCII 都是161。是这个原因吧?to hahawen(变态的大龄青年)
    还有其他的办法么?不能改动PHP配置。
      

  8.   

    to kingerq(多菜鸟) 呵呵,不好意思,没注意 // 间还有个英文空格。好像是可以了,那个英文空格的意思是?
      

  9.   

    to kingerq(多菜鸟) 我测试了一下,如果中文字前没有英文空格呢?还是不行  ~_~!
      

  10.   

    <?
    $str1 = "  市场市场。";
    $str1 = preg_replace('/ /is','', $str1);
    echo $str1.'<br>';$str2 = " 疾病。";
    $str2 = preg_replace('/ /is','', $str2);
    echo $str2;
    ?><?
    $str1 = "  市场市场。";
    $str1 = preg_replace('/  /is','', $str1);
    echo $str1.'<br>';$str2 = " 疾病。";
    $str2 = preg_replace('/  /is','', $str2);
    echo $str2;
    ?>这两个有什么区别呀,楼主?
      

  11.   

    区别在于preg_replace('/  /is','', $str1);中文空格我用  XXXX表示  英文空格用 EE表示
    ==================
    第一个
    preg_replace('/XXXX/is','', $str1);
    第二个
    preg_replace('/XXXXEE/is','', $str1);
    ==================不可用的原因是我们不知道文字前后是否有EE,并且我们不能采用替换的方法来加上一个EE以便形成XXXXEE来完成匹配替换。大家继续讨论一下吧,我很郁闷  ~_~!
      

  12.   

    发现大部分中文标点的ASCII都一样,郁闷
    =======================================
     |161<br>
    。|161<br>
    !|163<br>
    、|161<br>
    “|161<br>
    ”|161<br>
    《|161<br>
    》|161<br>
    ·|161<br>
      

  13.   

    如果不改php的配置还有一个方法,就是按faq中切割中文字符的方法。http://expert.csdn.net/Expert/FAQ/FAQ_Index.asp?id=7733每个字符判断,当时中文空格的时候,删,不是很麻烦,没时间帮你写,自己来吧
      

  14.   

    多谢xuzuning(唠叨)发现了一个怪异的东西,看上去两一样的全角空格,字节却不一样你看
    ===============$ar = array(" ","");
    foreach($ar as $v)
    {
        echo "$v :".ord($v[0]).",".ord($v[1])."\n";
    }输出=================
      :161,161
     :163,136