从字符串中提取特定值

时间:2015-04-11 09:30:04

标签: php

假设我有一个包含网址的变量,如下所示:

$url="http://www.example.com/login?u=17474&l=6277";

现在我将上面的url发送到函数

$out= myFunc($url);

现在我想要的是该函数应该只返回url之前的部分?即,如果上面的url被传递给函数,它应该返回http://example.com/login如果传递相对url像/login.php?u=26337&g=777它应该只返回/login.php.

我也希望获取网址中的值并在上面设置cookie我想要你的值,并设置cookie的值。

  function myFunc($url){
      $pass= substr($url,0,strpos($url,'?'));
   $u = ;//the value in; 
   setcookie('user',$u);
return $pass;
 }

我该怎么做?

2 个答案:

答案 0 :(得分:2)

此函数必须在"?":

之前返回子字符串
function myFunc($url){
    return substr($url,0,strpos($url,'?'));
}
$url="http://www.example.com/login?u=17474&l=6277";
echo myFunc($url);// http://www.example.com/login

将get字符串转换为数组,使用parse_str()函数:

function get_values($url){
    parse_str(substr($url,strpos($url,'?')+1),$array);
    return $array;
}
$values = get_values($url);
print_r($values);//Array ( [u] => 17474 [l] => 6277 )

访问u

$u = $values['u'];
setcookie('user',$u);

记得在任何输出到浏览器之前先将setcookie搞定!

答案 1 :(得分:1)

parse_url可能会对您有所帮助。只需使用它:

$url="http://www.example.com/login?u=17474&l=6277";
$url_segments = parse_url($url);

echo $url_segments['path'];