A. php正則表達式如何匹配出域名
看看我下面的例子代碼:
<?php
$s='http://www.abc.com
http://www.def.com/
https://www.ghl.com/';
if (preg_match_all('#https?://(.*?)($|/)#m', $s, $r)) print_r($r[1]);
?>
執行的結果是:
E:\ygb>php a.php
Array
(
[0] => www.abc.com
[1] => www.def.com
[2] => www.ghl.com
)
B. php正則表達式 正則匹配網址是否帶http:// https://
$str = "https://xxxxxxxxx";
if(preg_match("/^(http:\/\/|https:\/\/).*$/",$str)){
echo "yes";
}
親測是可以的,你可以自己拿去試一試
C. PHP正則表達式如何檢測現有的正確郵箱域名後綴
這個是IT群里的朋友!我不去群里了,在這里幫你把問題解決了吧!
其實嚴格說來,正則表達式只是一個模型匹配,所以直接使用模型匹配時我們有一個高通原理,也就是說匹配出來的內容是要大於你所需要的內容。就比此題來說,後邊可以匹配任何一個合規則的內容,而不可能精確地直接是你想要的內容——這就是高通,如果非要匹配到你想要的內容,使用正則運算有時是非常不合適的!所以這里不建議你使用這方式,或者是部分使用這種方式的形式。
高通就是通過你不全是你想要的,但你想要的一定全在里邊。
那麼,為什麼不考慮使用ajax的方式呢?後台自己設計一會資料庫,@前半段使用正則表這式,扣後半段直接使用數據存儲的內容,這樣可以精確到任何一個你想要的。
因為這里你想要的與不想要的其實也很模糊,你也不知道ckk這個域名在以後是不會被啟用!那麼你可以使用資料庫方式,由管理員自由添加!不用去修改那將來的表達式的!
但事實上很少人用這種方式——他們都在使用注冊時郵箱認證的方式,也就是說,發到你郵箱里一封信,輔助你完成注冊,這種情況雖然是高通,其他實他只是方便用戶能輸入正確,而不是要的確信數據,任何設計都要記著這句話——任何客戶端的信息都是不可信的!就算用JS完成了正則,那麼如果對方有意屏掉您的JS這十分容易的!所以你的正則根本不是用來驗證,而是方便用戶。
正是這種原因,高通的理由也是其存在的一個原因!就算使用了我說的資料庫,利用ajax來檢查,那麼別人照樣可以讓你的ajax不工作,而且,不是伺服器通過了,郵箱就一定有人注冊的!所以從這方面上來講,資料庫的實現意義也不大!
根據js的特點,客戶端的驗證沒有必要太這於麻煩,就算是服務端的驗證,建議你的也只採用這種方式即可。沒有使用資料庫的必要的——這個代價與達到的效果是不成比例的!
說完了,其實等於我也不解決!
D. PHP-php中如何使用正則表達式匹配URL中的域名
<?php
//從URL中取得主機名
preg_match("/^(http://)?([^/]+)/i",山兄判"IP/index.html"塵宴,$matches);
$host=$matches[2];
//從逗改主機名中取得後面兩段
preg_match("/[^./]+.[^./]+$/",$host,$matches);
echo"domainnameis:{$matches[0]} ";
?>
E. php 正則表達式 url匹配
1,preg_grep(pattern,array);它的返回值是一個新數組,新數組的元素是成功匹配的元素。
F. 正則表達式匹配域名
匹配完整域名的正則表達式:
[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(/.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+/.?
[a-zA-Z0-9][-a-zA-Z0-9]{0,62}表達的意思如下:
一個完整的域名,由根域名、頂級域名、二級域名、三級域名……構成,每級域名之間用點分開,每級域名由字母、數字和減號構成(第一個字母不能是減號),不區分大小寫,長度不超過63。
(/.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+/.?表達的意思如下:
完整的域名至少包括兩個名字(比如google.com,由google和com構成),最後可以有一個表示根域的點(在規范中,最後有一個點的才是完整域名,但一般認為包括兩個以上名字的域名也是完整域名,哪怕後面沒有點)。
G. PHP正則匹配問題preg_match("/([a-zA-Z]+)/","tech/web",$dirinfo);
使用括弧會對匹配結果進行分組。在匹配結果中,鍵為0的表示整個正則匹配的內容,之後的是對應的括弧中匹配的東西。
另外,你這里使用的是preg_match,所以只會匹配一個結果,如果想匹配所有的話,就使用preg_match_all
為了應正上面的描述,你可以運行以下代碼試試:
$dirinfo = array();
preg_match_all("/([a-zA-Z]+)\d+/","tech01/web",$dirinfo);
print_r($dirinfo);
H. 求高手寫php驗證域名的正則表達式
<?php
$str = "http://www.12aa_china521.com";
$strlen = strlen($str);
if($strlen<2 || $strlen>46)
{
echo "域名長度為2-46";
exit;
}
$arr = explode(".",$str);
if(strtolower(end($arr))=="cn")
{
if(strpos($str,"china") || strpos($str,"chinese"))
{
echo "cn後綴的域名不允許含有china或者chinese";
exit;
}
}
$preg = "/^(?:http:\/\/)?www.[0-9a-zA-Z]+_?[0-9a-zA-Z]+.(?:com(?:.cn)?|net|org|info|mobi)$/";
if(preg_match($preg,$str))
{
echo "域名正確";
}else{
echo "域名不正確";
}
?>