这个preg_replace使用 - 例如来自字符串示例文本的URL:
http://example.com/example-text-here
但是如果字符串有类似示例(文本)的东西(这里)它像下面那样:
http://example.com/example-text-here-
$url = preg_replace("![^a-z0-9]+!i", "-", strtolower(htmlspecialchars(@$_POST["name"])));
最后我不知道 -
答案 0 :(得分:1)
您可以围绕其中一个值使用捕获组并使用替换组。然后,检查preg_replace_callback
回调中的组:
$url = preg_replace_callback("/([^a-z0-9]+)$|[^a-z0-9]+/i", function ($m) {
return isset($m[1]) ? "" : "-";
}, $str);
请参阅IDEONE demo
正则表达式解释:
([^a-z0-9]+)$
- 第1组匹配字母和数字以外的1个或多个字符,直到字符串结尾|
- 或...... [^a-z0-9]+
- 除字母和数字以外的1个或多个字符使用isset
检查第一个组是否匹配,如果是,我们将替换为空,否则替换为-
。
但是,Robbie's suggestion使用$url = trim($url, '-')
的第二步可能更具可读性。见trim
help:
从字符串的开头和结尾剥去空格(或其他字符)