-1

以下の文字列の間"t="と文字列から文字列を抽出したいのですが、存在しない場合があります。次のことを試しましたが、代わりに結果が表示されます。ここで何が間違っているのでしょうか。手伝ってくれてありがとう。'&''&2384'"123455asdfgh&2384""123455asdfgh"

$string="t=123455asdfgh&2384";
$match=array();

preg_match('/t=(.*)(&.*)?/', $string, $match);

echo $match[1];

注:正規表現を使用する必要があります...

4

5 に答える 5

1

代わりにこれを試してください

preg_match('/t=([^&]*)(&.*)?/', $string, $match);
于 2012-11-16T14:37:52.763 に答える
1

貪欲でない数量詞を試してください。

preg_match('/t=(.*?)(?=&|$)/', $string, $match);

問題は、最初.*のグループが文字列の最後まですべてに一致することです。後者のグループはオプションであるため、これは完全に一致します。

于 2012-11-16T14:40:14.077 に答える
1

parse_str()これは、正規表現ではなく、に適して います。

parse_str( "t=123455asdfgh&2384", $params);
echo $params['t']; 

これは印刷します

123455asdfgh
于 2012-11-16T14:40:29.197 に答える
1

これはparse_str、(クエリ文字列の解析)の目的です。

$string="t=123455asdfgh&2384";
$args = array();
parse_str($string, $args);
echo $args['t']; // outputs '123455asdfgh'
于 2012-11-16T14:41:03.503 に答える
0

を使用しstrpos()て文字列の開始点と終了点を見つけ、それを抽出するのはどうですか?

于 2012-11-16T14:42:03.037 に答える