[英]Remove trailing slash on domain extensions without trailing directory
我正在從csv導入數據,並且一直在尋找特定正則表達式的高低,以刪除沒有目錄后的域名中的尾隨斜杠。 請參見以下示例:
example.com/ (remove trailing slash)
example.co.uk/ (remove trailing slash)
example.com/gb/ (do not remove trailing slash)
任何人都可以幫我解決這個問題,或者至少可以指出正確的方向嗎?
編輯:到目前為止,這是我的進步,目前我只匹配擴展名,但它使用尾隨目錄來拾取那些域。
[a-z0-9\-]+[a-z0-9]\/[a-z]
非常感謝
我不知道如何將它與正則表達式的性能進行比較,但是您可以不使用它。
一個簡單的例子:
$string = rtrim ($string, '/');
$string .= (strpos($string, '/') === false) ? '' : '/';
在第二行中,如果字符串已經包含一個(從文件夾中分離域),則僅在末尾添加一個/
。
如果第一個/
找到的是字符串的最后一個字符,則更可靠的方法可能是僅使用rtrim
。
不確定,
但是你可以試試看
如果僅是$_SERVER['SERVER_NAME']
則刪除斜杠,否則保留斜杠
因為$ _SERVER ['SERVER_NAME']將返回沒有任何目錄的URL
嘗試這個
/^(http|https|ftp)\:\/\/[a-z0-9\-\.]+\.[a-z]{2,3}(:[a-z0-9]*)?\/?([a-z0-9\-\._\?\,\'\/\\\+&%\$#\=~])*$/i
您可以測試/ [az] /上的匹配項,如果找不到最后一個字符,則將其刪除。
這是javascript,但在php中會類似。
/\/[a-z]+\//
var txt = 'example.com/gb/';
var match = txt.match(/\/[a-z]+\//);
if (!match) {
alert(txt.substring(txt,txt.length-1));
}
else {
alert(txt);
}
試試看,它的工作原理:
<?
$result = preg_replace('/^([^\/]+)(\/)$/','$1',$your_data);
?>
我已經測試過了:
$reg = '/^([^\/]+)(\/)$/';
echo preg_replace($reg,'$1',$str1);//example.com
echo preg_replace($reg,'$1',$str2);//example.co.uk
echo preg_replace($reg,'$1',$str3);//example.com/gb/
?>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.