たとえば、私の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);
これは機能するはずです。リスト関数が非推奨かどうかはわかりません。