求助!关于字符串替换的问题??? 可能是病和毒兩個字的首尾字節剛好組成了你要取代的一個符號,我以前也遇到過類似的,你可以參考以下;http://www.csdn.net/Expert/TopicView1.asp?id=1083826 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 要不你用explode打开他们再连上.成不成. <?php$a="《计算机病毒技术》";$b="’|“|”|,|。|、|《|$|#|℃|¥|§|*|》";preg_match_all("/[\\x80-\\xff]?./",$a,$arr);$a=implode(preg_replace("/$b/","",$arr[0]),"");echo "a=$a<br>";?> 问题解决。多谢qiushuiwuhen(秋水无恨),也谢谢回答问题的各位网友 秋水的思路真是绝了!!!hehe,解释就由我来吧preg_match_all("/[\\x80-\\xff]?./",$a,$arr);中间[\\x80-\\xff]代表gb2312的高字节部分,?代表非贪婪模式,表示{0,1},这么模式就代表了一个字,包括双字节的汉字,然后通过preg_match_all将所有字分解到$arr[0]这个数组中了再然后通过preg_replace将数组中符合$b模式的字符替换为空,返回新数组,然后再合并新数组^_^ 这里大虾真多啊!受益菲浅!再次谢谢qiushuiwuhen(秋水无恨),谢谢 vivanboy(☆☆☆☆☆)(★★★★★) 呵。这是我笨人的笨方法。<?php$b="这是一本《计算机病毒技术》书籍";$b=eregi_replace('《(.+)》','\\1',$b);echo "$b<br>";?> $b="这是一本《计算机病毒技术》《计算机病毒技术》《计算机病毒技术》《计算机病毒技术》2002-9-11书籍";$b=preg_replace('/《(.+)》/U','\\1',$b);echo "$b<br>"; 不好意思,上面解释刚好反了。应该是默认情况下是贪婪模式加上U才是非贪婪模式,非贪婪模式尽可能少的匹配所搜索的字符串?放在(*, +, ?, {n}, {n,}, {n,m})就是非贪婪模式单个?表示{0,1} PHP调用代码 对比值越大越好,咋搞?晕头了。 晕了,SESSION存不住了,刷新一次生成一个新的,count也不会加了 如何用php把一个16进制的串写入bin文件中. [求助] Array & eval问题 在IE中如何弹出安全认证对话框,如:3721的网络实名 关于数组输出格式的问题 紧急求助:mysql不能启动的问题 时间计算的问题 PHP与C的学习时间之比为多少? 上传图片时,请问如何限制图片的大小?不能大于800字节! 使用mysql_connect登录数据库时,能否直接使用加密过的密码进行认证(例如md5),而不使用明文方式
$a="《计算机病毒技术》";
$b="’|“|”|,|。|、|《|$|#|℃|¥|§|*|》";
preg_match_all("/[\\x80-\\xff]?./",$a,$arr);
$a=implode(preg_replace("/$b/","",$arr[0]),"");
echo "a=$a<br>";
?>
多谢qiushuiwuhen(秋水无恨),也谢谢回答问题的各位网友
hehe,解释就由我来吧preg_match_all("/[\\x80-\\xff]?./",$a,$arr);
中间[\\x80-\\xff]代表gb2312的高字节部分,?代表非贪婪模式,表示{0,1},这么模式就代表了一个字,包括双字节的汉字,然后通过preg_match_all将所有字分解到$arr[0]这个数组中了再然后通过preg_replace将数组中符合$b模式的字符替换为空,返回新数组,然后再合并新数组^_^
再次谢谢qiushuiwuhen(秋水无恨),谢谢 vivanboy(☆☆☆☆☆)(★★★★★)
$b="这是一本《计算机病毒技术》书籍";
$b=eregi_replace('《(.+)》','\\1',$b);
echo "$b<br>";
?>
$b=preg_replace('/《(.+)》/U','\\1',$b);
echo "$b<br>";
应该是
默认情况下是贪婪模式
加上U才是非贪婪模式,非贪婪模式尽可能少的匹配所搜索的字符串?放在(*, +, ?, {n}, {n,}, {n,m})就是非贪婪模式
单个?表示{0,1}