如何在PHP的变量中删除空格?

Léo*_* 준영 74 php string whitespace

我知道这个评论 PHP.net.我想有一个像trPHP这样的类似工具,我可以简单地运行

tr -d " " ""
Run Code Online (Sandbox Code Playgroud)

我运行不成功的功能php_strip_whitespace通过

$tags_trimmed = php_strip_whitespace($tags);
Run Code Online (Sandbox Code Playgroud)

我运行正则表达式功能也失败了

$tags_trimmed = preg_replace(" ", "", $tags);
Run Code Online (Sandbox Code Playgroud)

Pau*_*xon 134

要删除任何空格,可以使用正则表达式

$str=preg_replace('/\s+/', '', $str);
Run Code Online (Sandbox Code Playgroud)

有关可以处理UTF-8字符串中的空格的内容,请参阅此答案.

  • +1因为这会删除所有空格而不仅仅是空格. (21认同)
  • 它比逐个替换它们快一个数量级,这就是为什么:) (2认同)

ppo*_*ma1 41

默认情况下,正则表达式不会考虑UTF-8字符.该\s元字符只占原来的拉丁语集.因此,以下命令仅删除制表符,空格,回车符和新行

// http://stackoverflow.com/a/1279798/54964
$str=preg_replace('/\s+/', '', $str);
Run Code Online (Sandbox Code Playgroud)

随着UTF-8成为主流,当它达到新的utf-8字符时,这种表达将更频繁地失败/停止,留下\s无法解释的空白.

为了处理在unicode/utf-8中引入的新类型的空白区域,需要更广泛的字符串来匹配和移除现代空白区域.

因为默认情况下正则表达式不识别多字节字符,所以只能使用分隔的元字符串来识别它们,以防止字节段在其他utf-8字符中改变(\x80在四元组中可以替换所有\x80子字节)在智能报价中)

$cleanedstr = preg_replace(
    "/(\t|\n|\v|\f|\r| |\xC2\x85|\xc2\xa0|\xe1\xa0\x8e|\xe2\x80[\x80-\x8D]|\xe2\x80\xa8|\xe2\x80\xa9|\xe2\x80\xaF|\xe2\x81\x9f|\xe2\x81\xa0|\xe3\x80\x80|\xef\xbb\xbf)+/",
    "_",
    $str
);
Run Code Online (Sandbox Code Playgroud)

这会占用并删除制表符,换行符,垂直制表符,换页符,回车符,空格,此外还可以从此处:

nextline,非破坏空间,蒙古元音分隔符,[en quad,em quad,en space,em space,三个每em空间,四个每个空间,六个每空间,图形空间,标点符号空间,薄空间,毛发空间,零宽度空间,零宽度非连接器,零宽度连接器],线分隔符,段落分隔符,窄不间断空间,中等数学空间,字连接器,表意空间和零宽度非打破空间.

当从自动化工具或网站导出文本搜索,识别时,其中许多会破坏xml文件,并且可以无形地粘贴到PHP源代码中,导致解析器跳转到下一个命令(段落和行分隔符),导致行要跳过的代码导致间歇性,无法解释的错误,我们已经开始将其称为"文本传播疾病"

[再也不能安全地从网上复制和粘贴了.使用字符扫描程序来保护您的代码.大声笑]


tra*_*nte 26

有时您需要删除连续的空格.你可以这样做:

$str = "My   name    is";
$str = preg_replace('/\s\s+/', ' ', $str);
Run Code Online (Sandbox Code Playgroud)

输出:

My name is
Run Code Online (Sandbox Code Playgroud)


Tyl*_*ter 12

$string = str_replace(" ", "", $string);
Run Code Online (Sandbox Code Playgroud)

我相信preg_replace会寻找类似的东西 [:space:]


Kum*_*mar 7

您可以使用php中的trim功能来修剪两侧(左侧和右侧)

 trim($yourinputdata," ");
Run Code Online (Sandbox Code Playgroud)

要么

trim($yourinputdata);
Run Code Online (Sandbox Code Playgroud)

你也可以使用

ltrim() - Removes whitespace or other predefined characters from the left side of a string
rtrim() - Removes whitespace or other predefined characters from the right side of a string
Run Code Online (Sandbox Code Playgroud)

系统:PHP 4,5,7
文档:http://php.net/manual/en/function.trim.php

  • 修剪不会删除字符串内部的空格,只会删除左侧和右侧的空格。顺便说一句,修剪中默认为空格,您不必给出第二个参数 (2认同)

cam*_*ase 5

如果你想删除$ tags中的所有空格,为什么不只是:

str_replace(' ', '', $tags);
Run Code Online (Sandbox Code Playgroud)

如果你想删除新的线路,这需要更多......

  • 如果你没有将结果赋给变量,这实际上不会做任何有用的事情. (2认同)