我讓用戶在我的網站上創建自己的配置文件,以便他們可以選擇他們的網址。例如,如果他們的名字是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