これが私がこれまでに持っているものです:
preg_match('/[q|p]=(.*?)&/',$url,$query);
q
問題は、またはで終わるパラメーターがある場合p
、それらが含まれることです。
&cap=queryhere
でcap
終わるp
ので、q と p のみからの検索クエリのみを含めるにはどうすればよいですか。ありがとう!
これが私がこれまでに持っているものです:
preg_match('/[q|p]=(.*?)&/',$url,$query);
q
問題は、またはで終わるパラメーターがある場合p
、それらが含まれることです。
&cap=queryhere
でcap
終わるp
ので、q と p のみからの検索クエリのみを含めるにはどうすればよいですか。ありがとう!
'/\W[q|p]=(.*)&/'
前の数字が単語文字 (aZ、0-9、または _) ではない場合にのみ、一致する前に \W を追加するように正規表現を更新できます。
個人的には、$_GET['p']
orを使用します$_GET['q']
。
<?php
if ( isset($_GET['p']) )
$query = $_GET['p'];
?>
正規表現を使用する必要はありません。php には、情報の種類を操作する関数が組み込まれているため、より正確です。
<?php
$url = "http://mysite.com/page.php?q=this is my query&a=123";
$query = parse_url($url, PHP_URL_QUERY);
parse_str($query, $opt);
print_r($opt);
出力:
Array
(
[q] => this is my query
[a] => 123
)