※ ChatGPTを利用し、要約された質問です(原文:正規表現について(preg_replace))
正規表現について(preg_replace)
このQ&Aのポイント
正規表現を使用して特定のパラメータ以外を除去したい
パラメータ k, pr, mrr, op の値を残す方法を教えてください
preg_replace を使用してパラメータを除去した結果が意図しないものになる
お世話になっております。
半日悩んでうまくいかなかったので教えてください。
このようなクエリつきのURLがあります。
$str = "http://XXX/index.jsp?****************&k=zp&pr=abc&guid=ON¶m=adfdOI%G_D000&pr=aaaa&mrr=aaaa&op=bbb"
この中のパラメータから、特定のパラメータ以外を除去したいのです。
残したいのは
k=
pr=
mrr=
op=
のみです。
こんな感じで正規表現を書いてみたのですが、
preg_replace("/((?!k=)(?!pr=)(?!mmr=)(?!op=)([\w%_-]+)=)[\w%_-]+\&?/", "", $str)
http://XXX/index.jsp?k=zp&ppo
こんな結果になってしまいます。
お詳しいかたご教授願えませんでしょうか?
よろしくお願いいたします。
お礼
ありがとうございました! >sedの正規表現は先読み・戻り読みなどができないのでは? なるほど。よく理解できました。 今回本当に勉強になりました。 ありがとうございます。