if(preg_match(/(www|co.uk|uk.com|com|net|edu|org|org.uk|info|me|biz|co|io)/, $hostParts)) {
//unset this element from the array;
}
我使用正则表达式删除常见的域扩展名。我遇到的问题是我的表达式也与www.cnet.com示例中的cnet网络相匹配。我如何阻止它匹配部分单词,例如像www.cnet.com这样的域名,因为我只想删除www和com部分。感谢。
答案 0 :(得分:2)
一般来说,\b
可以满足您的需求。使用两个\b
对您的单词进行入站。 but check the updates for your specific case
。
if(preg_match('/\b(www|co.uk|uk.com|com|net|edu|org|org.uk|info|me|biz|co|io)\b/si', $hostParts)) {
//unset this element from the array;
}
<强>更新强>
这是一个更新,这是针对网址的,我没有考虑到这一点:
if(preg_match('/(\bwww\.|(\.(co\.uk|uk\.com|com|net|edu|org|org.uk|info|me|biz|co|io)\b))/si', $hostParts)) {
//unset this element from the array;
}
更新2
这是一个例子,请注意我已经用“org.uk”交换了“org”,因为如果第一个被捕获,那么第二个将不会:
<?php
$str = 'www.cnet.org.uk';
$str = preg_replace('/(\bwww\.|(\.(co\.uk|uk\.com|com|net|edu|org.uk|org|info|me|biz|co|io)\b))/si', '', $str);
echo $str;
?>