在分裂数组中的某个单词后获取单词?

时间:2017-02-08 10:12:12

标签: php

我有一条用正斜杠分隔的路径。

$uri = getenv('REQUEST_URI');
$uri = explode('/', $uri);
$uri = array_filter($uri);
$uri = array_merge($uri, array());

路径最终会像:

/user/john/account

这将获取路径中的最后一个单词“account”。

$uri = end($uri);

如何将'user'后的第一个单词变为变量?

在这种情况下,它将是'john',但名称可以在每个新URI上更改。

'用户'始终保持同一个字。

5 个答案:

答案 0 :(得分:3)

$uri = "/user/john/account";
$uri_array = explode("/", $uri);
$key = array_search("user", $uri_array);
$desired_value = array_key_exists($key+1, $uri_array) ? $uri_array[$key+1] : "error";
echo $desired_value;

以下是您需要的:注意:“user”是array_search中的固定术语..您可以更改它

答案 1 :(得分:1)

在$ uri = end($ uri)之前添加:

$uriArray = explode('/',$uri);  //$uriArray[0] = 'user'  //$uriArray[1] = 'john'

$name = $uriArray[1];

通过这个你也可以得到斜杠之后的最后一个元素

编辑: 你也可以像这样使用preg_split('pattern',$ string):

$name = preg_split('user/',$uri);

$ name将是“john / account”。然后再次使用explode将其保存到数组中,元素0是名称

答案 2 :(得分:1)

修改:使用M A SIDDIQUIs回答这是解决此问题的更好方法

您可以为此编写一个函数,找出uri-Array的whitch位置包含单词user,然后返回应包含该名称的下一个位置。

function getName($uri)
{
    $uri = explode('/', $uri);
    for($i = 0; $i < sizeof($uri); $i++){
        if($uri[$i] == "user"){
            return $uri[$i+1];
        }
    }
}

然后你只需要打印出来:

echo getName("exmaple/user/username/etc");

答案 3 :(得分:1)

您可以使用此

$uri='/user/john/account';
$from1 ='/user/';
$to1 ='/';
//$uri = explode('/', $uri);

echo get_string_between($uri,$from1,$to1);

function get_string_between ($str,$from,$to) {
    $string = substr($str, strpos($str, $from) + strlen($from));
    if (strstr ($string,$to,TRUE) != FALSE) {
        $string = strstr ($string,$to,TRUE);
    }
    return $string;
}

答案 4 :(得分:1)

在这种情况下,使用preg_match可能会更有效:

Psy Shell v0.8.1 (PHP 7.1.1-1+deb.sury.org~xenial+1 — cli) by Justin Hileman
>>> preg_match('~/user/([^/]+)/?~', '/test/user/username/tuedelue', $matches);
=> 1
>>> $matches;
=> [ 
     "/user/username/",
     "username",
   ]
>>> $matches[1];
=> "username"
>>> |

所以这些行

$user = 'unknown';
if (preg_match('~/user/([^/]+)/?~', getenv('REQUEST_URI'), $matches)) {
    $user = $matches[1];
}

可以解决您的问题。