簡體   English   中英

刪除域擴展名中沒有尾隨目錄的尾部斜杠

[英]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);   
}

http://jsfiddle.net/xjKTS/

試試看,它的工作原理:

<?
$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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM