存在しない場合に最初http_build_query
に a を追加する方法を知っている人はいますか??
現在、index.php を追加していますか? 私のすべてのリンクに。したくない理由がありますか?リンクにハードコードされています。http_build_query が何らかの方法で存在しない場合にそれを追加するだけであれば、それは大きな助けになります。
http_build_query()
は URL を解析しないため、返された文字列をどこに追加しているかを知ることができません。?
まだ URL がない場合は to URL を追加し、その結果を追加できますhttp_build_query()
。
例:
$params = http_build_query(...);
if (strrpos($url, '?') !== strlen($url) - 1) {
// if the value in $url does not end with a ?, append one
$url .= '?';
}
$url .= $params;
$url
クエリ文字列を追加する部分を保持し、$q
の結果である場合http_build_query
、ワンライナーは次のようになります。
$url2 = strpos($url, '?')?$url.'&'.$q:$url.'?'.$q;
もちろん、その一般的なケースの前提は、$url が有効であり、既存のクエリ文字列が URL エンコードされていることです。
いくつかのテストコード:
$url = 'http://google.com';
$params = array('q'=>'something', 'q2'=>'something else');
$q = http_build_query($params);
$url2 = strpos($url, '?')?$url.'&'.$q:$url.'?'.$q;
echo 'Original url: ', $url, PHP_EOL, 'Final url: ', $url2, PHP_EOL;
$url = 'http://google.com/?extra=som';
$url2 = strpos($url, '?')?$url.'&'.$q:$url.'?'.$q;
echo 'Original url: ', $url, PHP_EOL, 'Final url: ', $url2, PHP_EOL;
そして出力:
Original url: http://google.com
Final url: http://google.com?q=something&q2=something+else
Original url: http://google.com/?extra=som
Final url: http://google.com/?extra=som&q=something&q2=something+else