我正在写一些我认为简单的剧本,但我被卡住了。
场景是我想从GET请求中创建2个字符串。
例如:domain.com/script.php?Client=A12345
在script.php中,它需要抓住"客户端"并创建2个变量。一个是$ brand,需要从URL中获取A或B.其他是$ id,需要从URL中获取12345。
现在,在它拥有这两个变量$ brand和$ id后,需要根据下面的品牌重定向if语句
if ($brand=="A") {
header('Location: http://a.com');
}
if ($brand=="B") {
header('Location: http://b.com');
在每个网址的末尾,我想要支持$ id,但我不确定如何执行此操作。
例如,我将访问domain.com/script?Client=A1234上的脚本,并且需要将我重定向到a.com/12345
提前致谢!
答案 0 :(得分:1)
$fullCode = $_REQUEST['Client'];
if(strpos($fullCode, 'A') !== false) {
$exp = explode('A',$fullcode);
header('Location: http://a.com/' . $exp[1]);
}
else if(strpos($fullCode, 'B') !== false) {
$exp = explode('B',$fullcode);
header('Location: http://b.com/' . $exp[1]);
}
else {
die('No letter occurence');
}
答案 1 :(得分:0)
你可以轻松做到,
$value = $_GET['Client'];
$brand = substr($value, 0, 1);
$rest = substr($value, 1, strlen($brand)-1);
现在您拥有$ brand字符串中的第一个字符,您可以执行if语句并按照您想要的方式重定向...
答案 2 :(得分:0)
你的意思是这样的吗?
注意:
只有品牌长度仅为1个字符时才会生效。如果情况并非如此,请提供更好的例子。
<?php
$client = $_GET['Client'];
$brand = strtolower(substr($client, 0, 1));
$id = substr($client, 1);
if ($brand == 'a')
{
header("Location: http://a.com/$id");
}
elseif ($brand == 'b')
{
header("Location: http://b.com/$id");
}
?>
答案 3 :(得分:0)
尝试使用:
preg_match("/([A-Z])(\d*)/",$_GET['Client'],$matches);
$matches[1]
将包含该字母,$matches[2]
将包含您的ID。
然后你可以使用:
if ($matches[1]=="A")
{
header('Location: http://a.com/{$matches[2]}');
}
if ($matches[1]=="B")
{
header('Location: http://b.com/{$matches[2]}');
}
答案 4 :(得分:0)
建议您也可以尝试
$requested = $_GET["Client"];
$domain = trim(preg_replace('/[^a-zA-Z]/',' ', $requested)); // replace non-alphabets with space
$brand = trim(preg_replace('/[a-zA-Z]/',' ', $requested)); // replace non-numerics with space
$redirect_url = 'http://' . $domain . '/' . $brand;
header('Location:' . $redirect_url);
但最好是将域名和品牌作为两个单独的参数,并在重定向之前单独清理它们,以防止从单个参数中提取它们的开销。
注意:当域名本身具有数字时,此表达式可能无效,并且因为客户端是通过获得大量验证而获得的,并且实际上需要进行卫生处理。
答案 5 :(得分:0)
$brand = strtolower($_GET['Client'][0]);
$id = substr($_GET['Client'], 1);
header("Location: http://{$brand}.com/{$id}");
答案 6 :(得分:0)
如果出于某种目的,您想要使用explode,那么您需要一个分隔符。 我们将'_'作为分隔符,因此您的示例将是这样的:domain.com/script.php?Client=A_12345
$yourstring = explode("_",$_GET["Client"]);
echo $yourstring[0];
//will output A
echo $yourstring[1];
//will output 12345
//your simple controller could be something like this
switch($yourstring[0]){
case: 'A':
header('Location: http://a.com?id='.$yourstring[1]);
exit();
break;
case: 'B':
header('Location: http://b.com?id='.$yourstring[1]);
exit();
break;
default:
//etc
}