PHP 删除分隔线之间的多余空格
PHP Remove extra spaces between break lines
我在 PHP 中有一个字符串,我可以删除多个连续的断行和多个 space,但我仍然无法删除多个断行,如果我在中间有一个 space。
例如:
Text \r\n \r\n extra text
我想将此文本清理为:
Text \r\nextra text
也可能是:
Text \r\n \r\nextra text
分界线后不需要额外的espace。
我现在拥有的是:
function clearHTML($text){
$text = strip_tags($text);
$text = str_replace(" ", " ", $text);
$text = preg_replace("/[[:blank:]]+/"," ",$text);
$text = preg_replace("/([\r\n]{4,}|[\n]{2,}|[\r]{2,})/", "\r\n", $text);
$text = trim($text);
return $text;
}
有什么建议吗?
要删除行间多余的空格,您可以使用
preg_replace('~\h*(\R)\s*~', '', $text)
正则表达式匹配:
\h*
- 0 个或多个水平空格
(\R)
- 第 1 组:任何行结束序列(替换为 </code>,仅此组值)</li>
<li><code>\s*
- 一个或多个空格
空白缩减部分可以合并到单个 preg_replace
调用,使用 (?: |\h)+
正则表达式匹配一次或多次出现的
字符串或水平空白。
注意:如果你有 Unicode 文本,你将需要 u
标志。
整个清理功能可以像
function clearHTML($text){
$text = strip_tags($text);
$text = preg_replace("~(?: |\h)+~u", " ", $text);
$text = preg_replace('~\h*(\R)\s*~u', '', $text);
return trim($text);
}
我在 PHP 中有一个字符串,我可以删除多个连续的断行和多个 space,但我仍然无法删除多个断行,如果我在中间有一个 space。 例如:
Text \r\n \r\n extra text
我想将此文本清理为:
Text \r\nextra text
也可能是:
Text \r\n \r\nextra text
分界线后不需要额外的espace。 我现在拥有的是:
function clearHTML($text){
$text = strip_tags($text);
$text = str_replace(" ", " ", $text);
$text = preg_replace("/[[:blank:]]+/"," ",$text);
$text = preg_replace("/([\r\n]{4,}|[\n]{2,}|[\r]{2,})/", "\r\n", $text);
$text = trim($text);
return $text;
}
有什么建议吗?
要删除行间多余的空格,您可以使用
preg_replace('~\h*(\R)\s*~', '', $text)
正则表达式匹配:
\h*
- 0 个或多个水平空格(\R)
- 第 1 组:任何行结束序列(替换为</code>,仅此组值)</li> <li><code>\s*
- 一个或多个空格
空白缩减部分可以合并到单个 preg_replace
调用,使用 (?: |\h)+
正则表达式匹配一次或多次出现的
字符串或水平空白。
注意:如果你有 Unicode 文本,你将需要 u
标志。
整个清理功能可以像
function clearHTML($text){
$text = strip_tags($text);
$text = preg_replace("~(?: |\h)+~u", " ", $text);
$text = preg_replace('~\h*(\R)\s*~u', '', $text);
return trim($text);
}