0

簡単なスクリプトだと思っていたものを書いていますが、行き詰まっています。

シナリオは、GET リクエストから 2 つの文字列を作成することです。

例: domain.com/script.php?Client=A12345

script.php では、「Client」を取得して 2 つの変数を作成する必要があります。1 つは $brand で、URL から A または B を取得する必要があります。その他は、URL から 12345 を取得する必要がある $id です。

ここで、これら 2 つの変数 $brand と $id を取得した後、以下のようにブランドに基づいてリダイレクトする if ステートメントが必要です。

if ($brand=="A") {
header('Location: http://a.com');
}
if ($brand=="B") {
header('Location: http://b.com');

各 URL の最後に $id を追加したいのですが、これを行う方法がわかりません。

たとえば、domain.com/script?Client=A1234 のスクリプトにアクセスすると、a.com/12345 にリダイレクトする必要があります。

前もって感謝します!

4

7 に答える 7

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');
}
于 2012-05-30T11:21:53.143 に答える
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");
}
?>
于 2012-05-30T11:19:31.983 に答える
0

簡単にできる、

$value = $_GET['Client'];

$brand = substr($value, 0, 1);

$rest  = substr($value, 1, strlen($brand)-1);

$brand 文字列の最初の文字ができたので、if ステートメントを実行して、必要な方法でリダイレクトできます...

于 2012-05-30T11:19:14.720 に答える
0
$brand = strtolower($_GET['Client'][0]);
$id    = substr($_GET['Client'], 1);

header("Location: http://{$brand}.com/{$id}");
于 2012-05-30T11:48:08.263 に答える
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]}');
}
于 2012-05-30T11:24:30.430 に答える
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);

ただし、ドメイン名とブランドを 2 つの個別のパラメーターとして取得し、それらをリダイレクトする前に個別にサニタイズして、単一のパラメーターからそれらを抽出するオーバーヘッドを回避できるとよいでしょう。

注: ドメイン名自体に数値が含まれている場合や、Client がかなりの検証を経て取得され、実際にはサニテーションが必要になるため、この表現は役に立たない可能性があります。

于 2012-05-30T11:27:40.363 に答える
0

何らかの目的で爆発を使用したい場合は、セパレーターが必要です。'_' を区切り記号として使用すると、例は次のようになります: 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
}
于 2012-05-30T12:03:44.670 に答える