dit*_*tto 1 javascript php jquery replace str-replace
我所拥有的是"text - something else",现在使用下面的代码我可以将其转换为"text-something-else",但我对额外的替换感到不满意.
无论如何将每个合并为一行?
PHP:
$url = strtolower(str_replace(" ", "-", splitstring($item->item)));
$url = str_replace("---", "-", $url);
Run Code Online (Sandbox Code Playgroud)
JS:
title = title.toLowerCase().replace(/ /g, '-');
title = title.replace(/---/g, '-');
Run Code Online (Sandbox Code Playgroud)
后者取代了这个:"text---something-else",所以他们需要.
使用正则表达式的力量:
preg_replace('/[ -]+/', '-', $str);
Run Code Online (Sandbox Code Playgroud)
要么:
str.replace(/[ -]+/g, '-');
Run Code Online (Sandbox Code Playgroud)
上面显然会用一个单一的连字符替换任意数量的连字符或空格,这与你之前的逻辑略有不同.如果您想考虑任何其他角色,您可以轻松地执行以下操作:
/[\s_-]+/
Run Code Online (Sandbox Code Playgroud)
以上将匹配任何空格,连字符或下划线.
作为在正则表达式中使用连字符时的警告,您应该确保它在[bracketed]组的末尾,[abc-]或者您需要使用反斜杠来逃避它,例如[a\-bc].这是因为正则表达式语法允许您匹配范围,例如0-9在这种情况下不会是您想要的范围.