在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_replace
来ereg_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的原因是删除所有的空格(包括制表符,换行符等)