我想确保字符串中的/
字符始终用两边的单个空格填充。
对于PHP,我目前正在使用str_replace
,但我不能保证任何数量的空格的所有场景。
$original = "Yes/No";
echo str_replace("/", " / ", $original) . "\n";
echo str_replace(" /", " / ", $original) . "\n";
echo str_replace("/ ", " / ", $original) . "\n";
我知道我传递给str_replace
函数的第一个参数/参数是错误的,因为它没有考虑到周围的字符。
以下是我想要实现的一些例子:
Original Desired
==============================
"Yes/No" ---------> "Yes / No"
"Yes / No" -------> "Yes / No"
"Yes/ No" --------> "Yes / No"
"Yes /No" --------> "Yes / No"
"Yes / No" -----> "Yes / No"
我倾向于使用regex
,但我不知道如何使用它们。
现在我想到了,也许我可以通过折叠空间来做到这一点?不确定。
答案 0 :(得分:4)
您可以使用此基于正则表达式的替换:
$original = preg_replace('~\h*/\h*~', ' / ', $original);
即。匹配/
两侧的变量空格,并替换为' / '
答案 1 :(得分:1)
preg_replace( "/(\s+)?\/(\s+)?/", ' / ', 'yes/ no');
细分:
(\s+)?
匹配零个或多个空格字符
\/
匹配斜杠
(\s+)?
匹配零个或多个空格字符
preg_replace(a,b,c)
将c
的匹配位替换为b
。
这将修复a
(零空格),yes/no
(一边是空白)或yes /no
(不均匀的空格)。
答案 2 :(得分:0)
或使用lil looop
while(strpos($str, " ") !== false)
$str = str_replace(" ", " ", $str);