php正则表达式删除字符串中不需要的空格

时间:2012-11-08 12:17:49

标签: php regex space

我有很长的代码列表:

BR 1111 
BR 2222 
CO 3333

我需要从他们中删除空间,以便他们最终:

BR1111 
BR2222 
CO3333

我试过这个无济于事:

preg_replace('/(\D{2})\s(\d{4})')

有什么想法吗?谢谢!

非常感谢你。我正在尝试添加带有表单文本区域的HTML页面,以添加这些代码的列表以进行清理:

<form name="f" action="clean.php" method="POST"> <textarea cols="70" rows="7" name="str" > <?php echo $str; ?> </textarea> <br /> <input type="submit" value=" Code Cleaner " style="font-size:18px; color:#ff0000;"> </form> 

我做错了什么? THX

3 个答案:

答案 0 :(得分:0)

这应该这样做:

$string = preg_replace('/([A-Z]{2})\s*([0-9]+)/','$1$2',$string);

使用BR 1111 BR 2222 CO 3333进行测试,并返回'BR1111 BR2222 CO3333' 或者,如果该列表恰好是简单的csv或txt文件,则可以使用以下Vim命令:

:%s/\([A-Z]\+\)\s*/\1/g

如果您不确定,只需在末尾添加c标记,并希望在替换之前查看每个匹配项:

:%s/\([A-Z]\+\)\s*/\1/gc

y确认,然后替换(删除空格),n跳过

答案 1 :(得分:0)

正则表达式/([A-Z]{2})\s+(\d{4})/应该可以正常工作:

基本上 - 来自A-Z的两个字母后跟1到无限空格,后跟4位数字。

preg_replace("/([A-Z]{2})\s+(\d{4})/", "$1$2", $string);

如果您只想删除所有空格,str_replace(" ", "", $string)/ +/的正则表达式可以解决问题:

str_replace(" ", "", $string);

preg_replace("/ +/", "", $string);

答案 2 :(得分:0)

如果您只需删除空格字符,则有两个选项:

  1. 正则表达式:

    $s = preg_replace("/ /", "", $s);
    
  2. 非正则表达式:

    $s = str_replace(" ", "", $s);
    
  3. 但是,如果您需要删除两个非数字字符和4位数之间的空格,请使用:

    $s = preg_replace("/(?<=\D{2}) (?=\d{4})/", "", $s);