1

このスクリプトは、フルパスの最後の部分を検出する必要があり、それがstackoverflow出力された場合ok

$current_url = $_SERVER['REQUEST_URI'];

$current_url_arr = explode('/',$current_url);
$count = count($current_url_arr);

if($current_url_arr[$count-2] == 'stackoverflow'){
    echo 'ok';
}
else {
    echo 'not ok';
}

例 1:www.myserver.ext/something/else/stackoverflow/ 出力:ok


例 2:www.myserver.ext/something/else/stackoverflow 出力:not ok


例 3:www.myserver.ext/something/else/stackoverflow/foo 出力:not ok


その趣旨をご理解いただければ幸いです。このスクリプトは正常に動作しますが、URL の最後の部分を読み取るためのより適切で洗練された方法があるかどうか疑問に思っています。

4

5 に答える 5

5
if (preg_match("#stackoverflow/$#", $_SERVER['REQUEST_URI'])) {

    echo 'ok';
}
于 2012-04-14T22:44:39.687 に答える
3

はい!あります$_SERVER['PATH_INFO']

if(isset($_SERVER['PATH_INFO'])) {
    $info = explode('/', trim($_SERVER['PATH_INFO'], '/'));

    if($info[count($info) - 1] === 'stackoverflow') {
        echo 'ok';
    } else {
        echo 'not ok';
    }
}
于 2012-04-14T22:40:33.550 に答える
1

basename()の使用は よりも良い考えだと思いますexplode()basename()関数は、末尾のスラッシュがあるかどうかに関係なく、url の最後の部分を返します。

<?php
$uri = $_SERVER['REQUEST_URI'];
if(basename($uri) == 'stackoverflow') {
    echo 'ok';
} else {
    echo 'not ok';
}
?>

うまくいけば、これは役に立ちます。

于 2012-04-14T23:42:16.417 に答える
1

これが最善の方法だと思います:

<?php

    $url = "www.myserver.ext/something/else/stackoverflow/";

    $fullpath = parse_url($url, PHP_URL_PATH);
    $paths = explode("/", $fullpath);
    $path = $paths[sizeof($paths)-1];

    if ($path === "stackoverflow") {
        # Condition satisfied
    }

?>
于 2012-04-14T23:13:58.730 に答える