2017-11-22 15 views
0

PHPでは、私のテストで変数をエスケープして変数を保持する文字列をチェックしたいと思います。私はrandom_idをトークンまたは正規表現で置き換える何かがあると思いますが、良い方法を見つけることができません。変数を保持する文字列を確認してください

アイデア?

例:

function test($string) { 
    if ($string == 'start/random_id/end') { 
     return 'random_id/end'; 
    } 
    } 

(任意の文字列にすることができrandom_id)

答えて

1

あなたが希望の場合パターンをチェックするのと同じように、を使って正規表現を使用するオプションかもしれません。

^start/(.+)/end$

あなたはグループであなたのrandom_idをキャプチャし、$matches[1]を使用して、それを参照することができます。例えば

あなたを与えるだろう
function test($string) { 
    if (preg_match("/^start\/(.+)\/end$/", $string, $matches)) { 
     return "$matches[1]/end"; 
    } 
    return $string; 

} 

echo test("start/[email protected]#$/end") . PHP_EOL; 
echo test("/end") . PHP_EOL; 
echo test("start/[email protected]#$/en") . PHP_EOL; 
echo test("start//end") . PHP_EOL; 

:それは一致しない場合

[email protected]#$/end 
/end 
start/[email protected]#$/en 
start//end 

は今、入力$stringが返されますが、あなたが望むものにそれを変更することができます。

0

編集:コメントごとに更新..

これは動作するはずです:

function test($string) { 
    $prefix = "start/"; 
    $suffix = "/end"; 
    if (substr($string, 0, strlen($prefix)) === $prefix && 
     substr($string, -strlen($suffix)) === $suffix) { 

     return substr($string, strlen($prefix)); 
    } else { 
     return $string; // I guess? otherwise you return nothing.. 
    } 
} 
+0

残念ながら、私のテスト関数は$ randomId varを知らないので、残念ながらこのようにはできません。$文字列はこの時点で既に処理されています。 – Promo

+0

コードを更新しました。 – xs0

関連する問題