たとえば、私のURLはhttp://example.tld/~2g
です。~
(2g
こちら)以降のデータを取得したい。
これどうやってするの?私は試した
$visitlink = explode("~", $_SERVER['REQUEST_URI']);
しかし、それは機能しません。
私はこれを使用します:
$visitlink = explode("~",$_SERVER['REQUEST_URI'],2);
$aftertilde = $visitlink[1];
関数を最大限に活用するにはexplode
、最初に分割するようにPHPに指示します~
(2に指示します)。このlist
構成は、戻り値を直接割り当てるのに役立ちます(デモ)。
list(, $visitlink) = explode("~", $_SERVER['REQUEST_URI'], 2);
値がまったく存在するかどうかわからない場合は、デフォルト値を指定することをお勧めします。
list(, $visitlink) = explode("~", $_SERVER['REQUEST_URI'], 2) + array(1 => NULL);
^^^^^^^^^^^^^^^^^^^
これは、配列和集合演算子を利用します。
または、ここに単純なパターンがあります。最初のパターンの後にすべてを取ります~
。
sscanf($_SERVER['REQUEST_URI'], "%*[^~]~%s", $data);
この例では、sscanf
単純な文字列検索/パターンに適した関数を使用しています。結果は$data
ここで変数に割り当てられます。デモ。
$visitlink = preg_replace('/^[^~]+~(.*)$/', '$1', $_SERVER['REQUEST_URI']);
RegExの^[^~]+~
一部は、に遭遇するまですべてに一致します~
。(.*)
チルダの後のすべてに一致します。$1
によって一致するものを逆参照するために使用され(.*)
ます。
list($before, $after) = explode("~", $_SERVER['REQUEST_URI'], 2);
これは機能するはずです。リスト関数が非推奨かどうかはわかりません。