0

URL からいくつかの文字列(たとえば 2 つのフィールド)を抽出するための正規表現を作成する際に助けが必要です。

ここで言いたいのは、文字列から URL を抽出しないということです。

私のURLを次のようにしましょう:

http:// example.com/conversion/?param1=dhkw121?param2=dhja143&uuid=jsbdwbjb-fwjdbw-wdvvw-wj

または、URL タイプは次のようになります。

http:// example.com/conversion/param1=dhkw121%uuid=dbjbjbcs-fbsj-fsjbjs-fsj /param2=dhja143

上記の URL から、これら 2 つの文字列を個別に抽出param1し、param2排他的に評価する必要があります。

PHP で正規表現を使用していくつかのものを読み取ろうとしましたが、正規表現だけでなく、後方参照などに含まれているようです。

これは私が試したもので、次のようなものです:

.*(param1\=.*param2\=.*)\&?.*

私はこの種の複雑な抽出にまったく慣れていません。誰か助けてください。

4

3 に答える 3

2

パラメータは英数字のみのようです。もしそうなら、私は使用することをお勧めしpreg_match_allます:

preg_match_all("/param[12]=(\w+)/", $url, $results);

regex101 デモ.

または、配列から要素 1 および 2 としてそれらを取得する場合:

preg_match_all("/param1=(\w+).*?param2=(\w+)/", $url, $results);

regex101 デモ.

配列の結果構造を示す ideone デモ

于 2013-08-29T12:09:52.130 に答える
0

これを試して:

param1=([^&]+).*param2=([^&]+)

param1 値はグループ 1 にあり、param2 値はグループ 2 にあります。

于 2013-08-29T12:05:43.597 に答える
0

これはあなたのニーズに合うはずです:

(param1|param2|anyotherparam)=([^/?&]+)

正規表現の視覚化

Debuggex でライブ編集

マッチを繰り返す:

  • 最初のグループ #1 にはパラメータの名前が含まれています
  • 2 番目のグループにはその値が含まれます

自分で確認してください: demo

于 2013-08-29T12:32:41.630 に答える