1

たとえば、私のURLはhttp://example.tld/~2gです。~2gこちら)以降のデータを取得したい。

これどうやってするの?私は試した

$visitlink = explode("~", $_SERVER['REQUEST_URI']);

しかし、それは機能しません。

4

4 に答える 4

2

私はこれを使用します:

$visitlink = explode("~",$_SERVER['REQUEST_URI'],2);
$aftertilde = $visitlink[1];
于 2012-06-30T15:32:53.127 に答える
0

関数を最大限に活用するには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ここで変数に割り当てられます。デモ

于 2012-06-30T21:04:29.783 に答える
0
$visitlink = preg_replace('/^[^~]+~(.*)$/', '$1', $_SERVER['REQUEST_URI']);

RegExの^[^~]+~一部は、に遭遇するまですべてに一致します~(.*)チルダの後のすべてに一致します。$1によって一致するものを逆参照するために使用され(.*)ます。

于 2012-06-30T15:35:00.130 に答える
0

list($before, $after) = explode("~", $_SERVER['REQUEST_URI'], 2);

これは機能するはずです。リスト関数が非推奨かどうかはわかりません。

于 2012-06-30T16:03:16.303 に答える