如何去除PHP变量中的空格?
我知道这个评论 PHP.net。我希望有一个类似的工具,如PHP,这样我就可以简单地运行tr
tr -d " " ""
我运行该函数失败php_strip_whitespace
$tags_trimmed = php_strip_whitespace($tags);
我运行正则表达式函数也失败了
$tags_trimmed = preg_replace(" ", "", $tags);
我知道这个评论 PHP.net。我希望有一个类似的工具,如PHP,这样我就可以简单地运行tr
tr -d " " ""
我运行该函数失败php_strip_whitespace
$tags_trimmed = php_strip_whitespace($tags);
我运行正则表达式函数也失败了
$tags_trimmed = preg_replace(" ", "", $tags);
默认情况下,正则表达式不考虑 UTF-8 字符。元字符仅考虑原始拉丁集。因此,以下命令仅删除制表符、空格、回车符和新行\s
// http://stackoverflow.com/a/1279798/54964
$str=preg_replace('/\s+/', '', $str);
随着 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
);
这将考虑并删除选项卡,换行符,垂直选项卡,表单馈送,回车符,空格,以及此处的其他内容:
nextline,不间断空格,蒙古语元音分隔符,[en quad,em quad,en空格,em空格,三个em空格,四个per-em空格,6-per-em空格,图形空间,标点空格,薄空间,头发空间,零宽度空间,零宽度非连接符,零宽度连接器],行分隔符,段落分隔符,窄不换行空格,中等数学空间,单词连接器,表意空间和零宽度不间断空格。
其中许多在从自动化工具或站点导出时会对xml文件造成严重破坏,这些工具或站点会破坏文本搜索,识别,并且可以无形地粘贴到PHP源代码中,从而导致解析器跳转到下一个命令(段落和行分隔符),从而导致代码行被跳过,从而导致间歇性,无法解释的错误,我们已经开始将其称为“文本传播疾病”
[从网络复制和粘贴不再安全。使用字符扫描程序保护您的代码。哈哈]