$st = wpsc_cart_item_name();
$Lg= 'en';
$Str ='<!--:en-->iPad 2 <!--:--><!--:zh-->中文<!--:--><!--:ja-->日文<!--:-->';switch ($Lg) {
    case 'zh' :
        $Pat = '/<!--:zh-->(.*)<!--:-->/U';
        break;
    case 'ja' :
        $Pat = '/<!--:ja-->(.*)<!--:-->/U';
        break;
    case 'en' :
        $Pat = '/<!--:en-->(.*)<!--:-->/U';
        break;
}preg_match ( $Pat, $st, $Marray );
echo $Marray [1];
echo $Lg;
echo $st;preg_match ( $Pat, $Str, $Marray );
echo $Marray [1];
这段可以输出字符串。
preg_match ( $Pat, $st, $Marray );
echo $Marray [1];  //这个输出空白
echo $st;          //这个输出结果为:<!--:en-->iPad 2 <!--:--><!--:zh-->中文<!--:--><!--:ja-->日文<!--:-->
preg_match ( $Pat, $st, $Marray );//感觉没有匹配到,请问解决这个问题应该是怎么样做???

解决方案 »

  1.   

    帮你测量下,echo $Marray [1]; 
    这个输出iPad 2
      

  2.   

    preg_match ( $Pat, $Str, $Marray );这个是可以的,$Str是个固定的值
    preg_match ( $Pat, $st, $Marray );这个就不行,不知道为什么,$st的值有,格式也对。
      

  3.   

    哦,原始数据问题$st = wpsc_cart_item_name();
    echo base64_encode($st);贴出结果
      

  4.   

    $Pat = '/<!--:en-->(.*)<!--:-->/uU';
    加上utf-8的修政符
      

  5.   

    可怜的孩子还在纠结.比较一下$Str 和你用 $st = wpsc_cart_item_name();产生的$st是不是不同就知道了,这个应该是你那个函数返回字符串的问题。有时候别相信自己的眼睛,让计算机来干活if ( strcmp($Str,wpsc_cart_item_name()!==0){
    echo '不相等';
    }
      

  6.   

    回xuzuning大大:
    wpsc_cart_item_name();是一个自定义函数,用来获取产品名称的
    回moocky大大:
    我加了utf-8的修正符,不能显示结果
    我个人觉得可能是没有得到匹配。
      

  7.   

    回PhpNewnew大大:
    呵呵,没办法,有问题不解决不行啊!
      

  8.   

    strcmp($Str,$st);
    返回结果是1
      

  9.   

    $Str的值,是我从网页中复制粘贴进去的,怎么会不一样呢???
      

  10.   


    那不就是了,两个字符串不相同啊.怎么匹配,所以问题在你的函数上 .
    加个循环进行查找哪个开始不同吧strncmp($str1,$str2,数字);do it...找出不同点
      

  11.   

    回PhpNwenwe大大:每个字符都不对,这是怎么回事???
      

  12.   

    $i=1;
    do{
    $la=strcmp($Str,$st,$i);
    $i=$i+1;
    if($la!==0){
    echo ": $i-$la";}
    }
    while($i<70);是不是我的代码有问题???
      

  13.   

    不对正常的,一开始就不对了 给你的$st 加上trim 看看?
      

  14.   

    $i=1;
    do{
    $st1=substr($st,$i,1);
    $Str1=substr($Str,$i,1);
    $la=strcmp($Str1,$st1);echo "$st1=$Str1<br>";$i=$i+1;
    }
    while($i<71);结果:
      

  15.   

    终于看到问题点了,原因输出函数都没有<>这些符号,请问现在应该怎么做呢??
      

  16.   

    搞定了,把<>用&lt;,&gt;替代就行了请问zh(中文)en(英文)ja(日文)这样的格式怎么匹配