PHP - Bir URL kuyruk sonuna bir eğik çizgi Çıkarma

7 Cevap

Aşağıdaki kodu "www." Kaldırır, vb bir veritabanına girilen web sitelerinin başından itibaren. Bu harika çalışıyor.

Ben aynı veritabanına girilen bir web sitesinin kuyruk sonuna bir eğik çizgi kaldırmak için benzer kodu kullanabilirsiniz bir yolu var mı?

Teşekkür peşin,

John

$remove_array = array('http://www.', 'http://', 'https://', 'https://www.', 'www.');
$site = str_replace($remove_array, "", $_POST['site']);

7 Cevap

$site = preg_replace('{/$}', '', $site);

Bu işlem basit bir regular expression kullanır. $ tek maç dizenin sonunda bölü, bu yüzden stackoverflow.com/questions/ ilk çizgi kaldırmak anlamına gelir. Kaşlı {} sadece sınırlayıcılardır; PHP eşleşen karakterleri ve bazı aptal nedenle düzenli ifadelerin ön ve arka gerektirir.

Eğer dize sadece ucunu kırpmak için trim family of functions. Also, you could use rtrim bir dize kesilmiş istediğiniz bir karakter dize iletebilirsiniz:

$site = rtrim($site, "/");

En basit yöntem:

$url = rtrim($url,'/');

John ilk ve ben bu şekilde daha şık çünkü onun çözümü tercih edilmelidir düşünüyorum, ancak burada başka biri:

$site = implode("/", array_filter(explode("/", $site)));

Update

Thx. Ben onu güncelledim ve şimdi bile bu gibi şeyler kolları

$site = "///test///test//"; /* to => test/test */

Hangi muhtemelen kabul cevaptan daha bile serin yapar ;)

En zarif çözüm kullanmak için rtrim().

$url = 'http://www.domain.com/';

$urlWithoutTrailingSlash = rtrim($url, '/');

EDIT

I) (rtrim unutmuşum;

Ayrıca oynayabilir parse_url(). Olabilir

İstediğin bu mu?

$url = 'http://www.example.com/';

if (substr($url, -1) == '/')
    $url = substr($url, 0, -1);

. Belki de daha iyi bir çözüm htaccess kullanmak olacaktır, ama php de böyle bir şey yapabilirsiniz:

<?php
    header('location: '.preg_replace("/\/$/","",$_SERVER['REQUEST_URI']));
?>