我正在学习PHP并学习尝试从用户输入的数据中获取字符串并将其插入数据库,以用作网站上帖子的链接。 我在函数中使用正则表达式来改变字符串,如下所示:
function clean_url($string) {
$string = preg_replace('/[^a-z0-9-]+/','-',strtolower($string)); // allows only characters from a-z and 0-9 and converts string to lower case
$string = preg_replace('/-$/', '-', $string); // replace dash -
$string = preg_replace('/--+/','',$string); // replaces double dashes with a single dash
$string = preg_replace('/^-/', '', $string); // replace dash
return $string;
}
我想将所有正则表达式组合成一个有意义的正则表达式。记住这些规则
答案 0 :(得分:0)
preg_replace()
接受数组作为参数,因此一种方法是:
$string = preg_replace(array('/[^a-z0-9-]+/','/-$/','/--+/','/^-/'),array('-','-','',''),strtolower($string));
就个人而言,我更喜欢每个表达式的原始函数,因为它使代码更具可读性。我还会考虑使用str_replace()
进行简单替换
答案 1 :(得分:0)
如果您不希望在字符串开头的末尾有任何-
个字符,则可以使用trim()
。
对于双短划线替换,您可以使用str_replace()
,对于数字和alpabethic字符,您可以使用preg_replace()
。
function clean_url($string) {
return trim(str_replace('--', '-', preg_replace('/[^a-z0-9-]+/','-', strtolower($string))), '-');
}