我让用户在我的网站上创建自己的配置文件,以便他们可以选择他们的网址。例如,如果他们的名字是John Smith,他们可能想要输入john-smith,然后他们的个人资料URL是www.mysite.com/john-smith。preg_match验证一个URL slug
我需要使用preg_match来验证它们输入的是一个有效的URL段落。因此,这里有它必须履行有效的规则:
它必须至少包含一个字母,它只能包含字母,数字和连字符
有人可以帮我请我擅长PHP,但垃圾与正则表达式!
我让用户在我的网站上创建自己的配置文件,以便他们可以选择他们的网址。例如,如果他们的名字是John Smith,他们可能想要输入john-smith,然后他们的个人资料URL是www.mysite.com/john-smith。preg_match验证一个URL slug
我需要使用preg_match来验证它们输入的是一个有效的URL段落。因此,这里有它必须履行有效的规则:
它必须至少包含一个字母,它只能包含字母,数字和连字符
有人可以帮我请我擅长PHP,但垃圾与正则表达式!
我希望这个代码是不言自明:
<?php
function test_username($username){
if(preg_match('/^[a-z][-a-z0-9]*$/', $username)){
echo "$username matches!\n";
} else {
echo "$username does not match!\n";
}
}
test_username("user-n4me");
test_username("[email protected]")
但如果不是,则函数test_username()根据模式测试其参数:
^
)...[a-z]
)...[-a-z0-9]*
)的...$
)后,任何东西。相当简单,如果我们假设第一个字符必须是字母......
/[a-z]{1}[a-z0-9\-]*/i
更好的解决方案:
function is_slug($str) {
return preg_match('/^[a-z0-9](-?[a-z0-9]+)$/i', $str);
}
测试:
享受!
这对'invalid - slug'失败,# – Victor 2016-05-31 07:29:51
@Victor,你可以试试:/^[a-z]( - [a-z0-9] +)* $ / – 2016-08-07 00:07:21