在PHP中去除variables内部的空格

你怎么能剥离PHP的variables中的空格?

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

 tr -d " " "" 

我运行失败的functionphp_strip_whitespace通过

 $tags_trimmed = php_strip_whitespace($tags); 

我运行正则expression式函数也不成功

 $tags_trimmed = preg_replace(" ", "", $tags); 

正则expression式默认情况下不占用UTF-8字符。 元字符只占原来的拉丁语集。 因此,以下命令仅删除制表符,空格,回车符和新行

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

随着UTF-8成为主stream,这个expression式在达到新的utf-8字符时会更频繁地失败/停止,留下的空白无法解释。

为了处理在unicode / utf-8中引入的新types的空白,需要更广泛的string来匹配和删除现代空白。

由于正则expression式默认情况下不识别多字节字符,因此只能使用分隔的元string来标识它们,以防止字节段在其他utf-8字符中发生变化(四元组中的\x80可能会replace所有\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 ); 

这包括标签,换行符,垂直制表符,换页符,回车符,空格,以及另外从这里开始 :

nextline,non-breaking spaces,mongolian元音分隔符,[en quad,em quad,en space,em space,three-em space,four-em space,six-em space,figure space,punctuation space ,零空间宽度,零宽度非接合器,零宽度接合器],行分隔符,段落分隔符,窄不间断空间,中等math空间,字连接符,表意空间,打破空间。

当从自动化工具或网站导出的文件search,识别,并可以粘贴到PHP源代码,导致分析器跳转到下一个命令 (段落和行分隔符),这会导致线路许多这些破坏xml文件的浩劫的代码被跳过导致间歇性的,不明原因的错误,我们已经开始提到“文本传输疾病”

[不安全的复制和粘贴从networking了。 使用字符扫描器来保护您的代码。 大声笑]

要去除任何空格,可以使用正则expression式

 $str=preg_replace('/\s+/', '', $str); 

对于可以处理UTF-8string中的空格的东西,另请参阅此答案 。

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

 $str = "My name is"; $str = preg_replace('/\s\s+/', ' ', $str); 

输出:

 My name is 
 $string = str_replace(" ", "", $string); 

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

你可以使用修剪function从PHP修剪双方(左侧和右侧)

  trim($yourinputdata," "); 

要么

 trim($yourinputdata); 

你也可以使用

 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 

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

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

 str_replace(' ', '', $tags); 

如果你想删除新的行,这将需要更多一点…

任何可能的select是使用自定义文件包装来模拟variables作为文件。 你可以使用这个来实现它:

1)首先,注册你的包装(只有一次在文件中,使用它像session_start()):

 stream_wrapper_register('var', VarWrapper); 

2)然后定义你的包装类(这是真的写得很快,不完全正确,但它的工作原理):

 class VarWrapper { protected $pos = 0; protected $content; public function stream_open($path, $mode, $options, &$opened_path) { $varname = substr($path, 6); global $$varname; $this->content = $$varname; return true; } public function stream_read($count) { $s = substr($this->content, $this->pos, $count); $this->pos += $count; return $s; } public function stream_stat() { $f = fopen(__file__, 'rb'); $a = fstat($f); fclose($f); if (isset($a[7])) $a[7] = strlen($this->content); return $a; } } 

3)然后使用任何文件函数与您的包装var://协议(您可以使用它包括,要求等):

 global $__myVar; $__myVar = 'Enter tags here'; $data = php_strip_whitespace('var://__myVar'); 

注意:不要忘记在全局范围内使用variables(如全局$ __ myVar)

你可以通过使用ereg_replaceereg_replace

  $str = 'This Is New Method Ever'; $newstr = ereg_replace([[:space:]])+', '', trim($str)): echo $newstr // Result - ThisIsNewMethodEver 

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

 $str = "My name is faisal"; $str = preg_replace('/\s\s+/', ' ', $str); 

输出:

 My name is faisal 

注意:如果你真的想删除空格字符, str_replace比preg_replace更好。 使用preg_replace的原因是删除所有的空格(包括制表符,换行符等)