我正在研究重定向应用程序的查询字符串模式。我们可以在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
答案 0 :(得分:0)
这是使用正则表达式的地方:
preg_match('/((?:\/|&|\$).*)/', $code, $matches);
$code = $matches[1];
这将匹配/或&amp;或$后跟字符串的其余部分。
答案 1 :(得分:0)
你指的是 PHP重定向吗?或数据库中的查询字符串来获取数据?
您可以阅读strstr
手册。
答案 2 :(得分:0)
我找到了解决方案:
我只是把
if (strpos($code,'/') !== false) {
$code= strstr($code, '/',+1);
}
if (strpos($code,'$') !== false) {
$code= strstr($code, '$',+1);
}
一次循环后