在url中应用字符串操作后获取特定值

时间:2014-02-09 07:44:38

标签: php regex

我正在研究重定向应用程序的查询字符串模式。我们可以在OR中使用多个strstr语句吗?恩。如果我不确定它是& or & or $ or /那么是否可以使用OR条件中的$code= strstr($code, '/',+1);条件中的其他符号

说明:

网址会像我这样来到我们的重定向应用程序

 https://www.sample.com?key=1234~rety~1234~retu&c=12&k=12
    OR
    https://www.sample.com?key=1234~rety~1234~retu/c=12/k=12
    OR
    https://www.sample.com?key=1234~rety~1234~retu$c=12$k=12

我们目的的唯一变量是key(其名称可以更改,但数据将以相同的模式出现)我想要的只是使用~pattern获取数据。

我正在做以下事情:

parse_str(parse_url($url, PHP_URL_QUERY), $parts);
$keys = array_keys($parts);
 $size=sizeof($keys);
$total=substr_count($uri, '~');
$var=$keys[0];
 $value=$parts[$var];   
 for($i=0;$i<$size;$i++){
     $var=$keys[$i];
     $value=$parts[$var];
     $total=substr_count($value, '~');
     if($total==3){
         $digit_code = preg_split('/\~+/', $value);
$digit_code = array_filter($digit_code);
$digit_code = array_values($digit_code);

$project_id=$digit_code[0];
$country_id=$digit_code[1];
$vendor=$digit_code[2];
$code=$digit_code[3];
//$code= strstr($code, '/',+1);
     }

但是当url像这样来时它无法正常工作

https://www.sample.com?key=1234~rety~1234~retu/c=12/k=12
or
https://www.sample.com?key=1234~rety~1234~retu$c=12$k=12

3 个答案:

答案 0 :(得分:0)

这是使用正则表达式的地方:

preg_match('/((?:\/|&|\$).*)/', $code, $matches);
$code = $matches[1];

这将匹配/或&amp;或$后跟字符串的其余部分。

http://au1.php.net/preg_match

答案 1 :(得分:0)

你指的是 PHP重定向吗?或数据库中的查询字符串来获取数据?

您可以阅读strstr手册。

答案 2 :(得分:0)

我找到了解决方案:

我只是把

 if (strpos($code,'/') !== false) {
     $code= strstr($code, '/',+1);
}
  if (strpos($code,'$') !== false) {
     $code= strstr($code, '$',+1);
}

一次循环后