Bir URL geçerli dizini bulmak için preg_match

3 Cevap php

Ben bir kullanıcı URL son dizin için kontrol ederek görüntüleyen bir sitenin güncel bölümünü algılamaya çalışıyorum. Ben bunu yapmak için bir PHP ve regex kullanarak yaşıyorum ve ben henüz ne yazık ki oldukça orada yakın ama olduğumu düşünüyorum.

İşte ben şu anda ne var:

<?php
    $url = $_SERVER['REQUEST_URI_PATH'] = preg_replace('/\\?.*/', '', $_SERVER['REQUEST_URI']);
    $one = '/one/';
    $two = '/three/';
    $three = '/three/';
    $four = '/four/';
    $five = '/five/';

    echo $url;

    if (substr($_SERVER['REQUEST_URI_PATH'], 0, strlen($one)) == $one) {
        // URI path starts with "/one/"
        echo "The section is one.";
    }
    elseif (substr($_SERVER['REQUEST_URI_PATH'], 0, strlen($two)) == $two) {
        // URI path starts with "/two/"
        echo "The section is two.";
    }
    elseif (substr($_SERVER['REQUEST_URI_PATH'], 0, strlen($three)) == $three) {
        // URI path starts with "/three/"
        echo "The section is three.";
    }
    elseif (substr($_SERVER['REQUEST_URI_PATH'], 0, strlen($four)) == $four) {
        // URI path starts with "/four/"
        echo "The section is four.";
    }
    elseif (substr($_SERVER['REQUEST_URI_PATH'], 0, strlen($five)) == $five) {
        // URI path starts with "/five/"
        echo "The section is five.";
    }
?>

Ben önce yankı yerleştirdiğiniz ifadeler sadece $ url değeri onay almak durumunda. Bu çıkışlar

/ CurrentDirectory / file.php

Ancak koşullar kendilerini bir şey eşleşmiyor ve her bölüm için benim bireysel yankı görüntüler asla.

Bunu yapmanın kolay bir yolu varsa da o zaman önerilere açığım.

Teşekkürler

3 Cevap

Tamam, ben şimdi çalışma benim özgün çözüm var:

<?php
    $_SERVER['REQUEST_URI_PATH'] = preg_replace('/\\?.*/', '', $_SERVER['REQUEST_URI']);
    $one = '/one/';
    $two = '/three/';
    $three = '/three/';
    $four = '/four/';
    $five = '/five/';

    echo $url;

    if (substr($_SERVER['REQUEST_URI_PATH'], 0, strlen($one)) == $one) {
        // URI path starts with "/one/"
        echo "The section is one.";
    }
    elseif (substr($_SERVER['REQUEST_URI_PATH'], 0, strlen($two)) == $two) {
        // URI path starts with "/two/"
        echo "The section is two.";
    }
    elseif (substr($_SERVER['REQUEST_URI_PATH'], 0, strlen($three)) == $three) {
        // URI path starts with "/three/"
        echo "The section is three.";
    }
    elseif (substr($_SERVER['REQUEST_URI_PATH'], 0, strlen($four)) == $four) {
        // URI path starts with "/four/"
        echo "The section is four.";
    }
    elseif (substr($_SERVER['REQUEST_URI_PATH'], 0, strlen($five)) == $five) {
        // URI path starts with "/five/"
        echo "The section is five.";
    }
?>

Ama Emil yorumuna itibaren aşağıdaki ben şimdi çok daha basit bir yöntem olduğunu görmek ve ben de bu çalışma var:

<?php   
    $section = dirname($_SERVER['PHP_SELF']) . "/";

    if ($section == "/one/") {
        echo "one";
    } elseif ($section == "/two/") {
        echo "two";
    } elseif ($section == "/three/") {
        echo "three";
    } elseif ($section == "/four/") {
        echo "four";
    } elseif ($section == "/five/") {
        echo "five";
    } elseif ($section == "//") {
        echo "global";
    }
?>

Ben sadece başka birine kadar burada onlar kullanımı olan durumda her iki yöntem yayınlamak düşündüm.

Neden kullanmayın dirname?

Yoksa parse_url ile yapabilirsiniz