我从数据库查询中收到一个字符串,然后删除所有HTML标记,回车符和换行符,然后再将其放入CSV文件。唯一的事情是,我找不到删除方法字符串之间多余的空白的方法。
删除内部空白字符的最佳方法是什么?
我从数据库查询中收到一个字符串,然后删除所有HTML标记,回车符和换行符,然后再将其放入CSV文件。唯一的事情是,我找不到删除方法字符串之间多余的空白的方法。
删除内部空白字符的最佳方法是什么?
Answers:
不确定确切要什么,但是有两种情况:
如果你只是处理过剩whitespace上,你可以使用字符串的开头或结尾trim()
,ltrim()
或者rtrim()
将其删除。
如果你正在处理一个字符串中多余的空格考虑preg_replace
多whitespaces " "*
用单whitespace " "
。
例:
$foo = preg_replace('/\s+/', ' ', $foo);
$foo = preg_replace( '/\s+/', ' ', $foo );
遗嘱杀死nl2br()
$str = str_replace(' ','',$str);
或者,用下划线替换,等等等
Hi Earth
有4 位之间会变成:HiEarth
。这并不能解决我的问题。
没有其他示例适合我,因此我使用了以下示例:
trim(preg_replace('/[\t\n\r\s]+/', ' ', $text_to_clean_up))
这会将所有制表符,换行符,双倍空格等替换为简单的1个空格。
\s+
。尽管它是在2014年,所以也许它已经改变了,过去三年没有接触过PHP,无法发表评论,但是在解决方案中仍会保留当前答案,并且在某些情况下可能仍然存在。
如果从用户输入[或其他不受信任的来源]获取有效负载,则使用preg_replace()会有安全缺陷。PHP使用eval()执行正则表达式。如果未正确清理传入的字符串,则您的应用程序可能会遭受代码注入。
在我自己的应用程序中,我没有烦恼清理输入(并且因为我只处理短字符串),而是做了一个处理器密集型功能,尽管它很安全,因为它没有eval()任何东西,所以它是安全的。
function secureRip(string $str): string { /* Rips all whitespace securely. */
$arr = str_split($str, 1);
$retStr = '';
foreach ($arr as $char) {
$retStr .= trim($char);
}
return $retStr;
}
$str = preg_replace('/[\s]+/', ' ', $str);
我最近写了一个简单的函数,该函数无需使用正则表达式即可从字符串中删除多余的空格implode(' ', array_filter(explode(' ', $str)))
。
$str = "I am a PHP Developer";
$str_length = strlen($str);
$str_arr = str_split($str);
for ($i = 0; $i < $str_length; $i++) {
if (isset($str_arr[$i + 1]) && $str_arr[$i] == ' ' && $str_arr[$i] == $str_arr[$i + 1]) {
unset($str_arr[$i]);
}
else {
continue;
}
}
echo implode("", $str_arr);