【问题标题】:add white spaces between characters and special symbol in PHP在 PHP 中的字符和特殊符号之间添加空格
【发布时间】:2011-07-24 13:55:42
【问题描述】:

我是php新手,我想知道如何在字符和符号或符号和符号之间添加空格,例如原始字符串是“[PDF格式(29.71MB)]”,我该如何使用函数preg_replace或其他方法将结果表示为“[PDF格式(29.71MB)]”? 即,我想在符号“[”和字符“P”以及“)”和“]”之间留下空格

非常感谢

西蒙

【问题讨论】:

  • 请不要忘记在某个时候将最能帮助您的答案标记为“已接受”。

标签: php


【解决方案1】:
$s = "[PDF format(29.71MB)]";

$s = preg_replace("/[\[)](?!\s)/", "$0 ", $s);
$s = preg_replace("/(?!<\s)[\[(]/", " $0", $s);
$s = trim($s);

echo $s;

两个正则表达式

  1. 在每个 [) 后面添加一个空格
  2. 在前面没有空格的每个 ]( 前面添加一个空格

见:http://ideone.com/No9dq

【讨论】:

    【解决方案2】:

    对于您的字符串,正则表达式对我来说有点过分:

    $string = '[PDF format(29.71MB)]';
    $string = str_replace(array('[', ']', '('), array('[ ', ' ]', ' ('), $string);
    

    这会将需要额外空格的字符替换为带有空格的变体。

    【讨论】:

    • 这不考虑开头括号之前的空间。
    • 只看了“我想离开”这句话,对。 -固定。
    【解决方案3】:
    $s = "[PDF format(29.71MB)]";
    $s = preg_replace("/([^\w.])/", " \\1 ", $s);
    $s = preg_replace("/\s\s+/", " ", $s);
    echo $s;
    

    第一个在非单词字符和点的每一侧放置一个空格。第二个删除多余的空格。

    【讨论】: