我想要一个reg exp用于生成SEO友好的URL,所以像:
My product name
变为
My_product_name
This is a long,long,long!!sentence
变为
This_is_a_long_long_long_sentence
基本上所有非字母数字字符都被删除并替换为下划线。
有什么想法吗?
答案 0 :(得分:21)
preg_replace('/[^a-zA-Z0-9]+/', '_', $sentence)
基本上,它会查找任何非字母数字字符序列,并将其替换为单个“_”。这样,您还可以避免输出中连续两个_。
如果是URL,您可能还希望它们仅为小写:
preg_replace('/[^a-z0-9]+/', '_', strtolower($sentence))
答案 1 :(得分:5)
$a = preg_replace("/[^A-Za-z0-9]+/", "_", $str);
或/ \ W + /如果你想保留当前语言环境中被认为是“字母”的所有内容
更换后,也可能需要设置前导和尾随下划线
$a = trim($a, '_');
答案 2 :(得分:0)
$str = preg_replace("`[^a-z\d]+`i", "_", $str);