如何将非引号内的空格清空? 本帖最后由 qepynips 于 2010-03-02 20:08:36 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 如果按你所说的情况用这个 " 作为引号,很难判断正确情况, 就像下面这句话dddd " ddd " ddd" dddd " ddd" ddd "看, 那里是引号内, 那里引号外 ? 人都分辨不出来, 机械就更加不能。 我不清楚你要实际解决的是什么问题,什么情况, 或者你可以换个想法去解决问题, $a =<<<Aq qq qq "q qq qq" q qq qq " q qq qq "A;$reg = '/([^"]+)|(["].+?["])/i';preg_match_all($reg, $a, $matches);$rs = '';foreach ($matches[0] as $m){ if(preg_match('/["].+?["]/i', $m) != true) { $rs .= str_replace(' ', '', $m); } else { $rs .= $m; }}echo $rs; 以下正则中用到了一个匹配成对引号的小技巧,没想到直接清除引号外的,只能曲线一下了$str = <<< STRL1: q qq qqL2: "q qq qq"L3: 'q qq qq'L4: "q qq qq 'q qq qq'"STR;$str =str_replace(' ','▓',$str);//先把空格全部用特殊字符保护起来$str = preg_replace('/(["\']).*\\1/e',"str_replace('▓',' ','$0');",$str);//把成对的引号的空格还原$str = str_replace('▓','',$str);//把原本在引号外的被保护空格干掉$str = stripslashes($str);//去掉自动增加的转义符echo $str; #!/usr/bin/php 如何不显示在网页中 问一个很基础很弱的问题! 请各位达人帮忙看一下我这个程序哪里出了问题? 在用PHP中用DOM 对象 读取RSS时,出现的汉字全是乱码! 在服务器上面可以安装wampserver吗? 求教一个有关算法的问题 超奇怪,Mysql为何怎么也连不上???--------------从没遇到的问题!!!!!! PHP怎样制作在线点歌和在线电影?? 脚本文件中的一个小问题。 如何跨窗体刷新?? PHP读取文件,下载的原理是什么? php中正则表达式中必须转义的字符有哪些?
dddd " ddd " ddd" dddd " ddd" ddd "
看, 那里是引号内, 那里引号外 ? 人都分辨不出来, 机械就更加不能。 我不清楚你要实际解决的是什么问题,什么情况, 或者你可以换个想法去解决问题,
q qq qq "q qq qq" q qq qq " q qq qq "
A;$reg = '/([^"]+)|(["].+?["])/i';preg_match_all($reg, $a, $matches);$rs = '';foreach ($matches[0] as $m)
{
if(preg_match('/["].+?["]/i', $m) != true)
{
$rs .= str_replace(' ', '', $m);
}
else
{
$rs .= $m;
}
}echo $rs;
$str = <<< STR
L1: q qq qq
L2: "q qq qq"
L3: 'q qq qq'
L4: "q qq qq 'q qq qq'"
STR;
$str =str_replace(' ','▓',$str);//先把空格全部用特殊字符保护起来
$str = preg_replace('/(["\']).*\\1/e',"str_replace('▓',' ','$0');",$str);//把成对的引号的空格还原
$str = str_replace('▓','',$str);//把原本在引号外的被保护空格干掉
$str = stripslashes($str);//去掉自动增加的转义符
echo $str;