In PHP ist die Handhabung von URL -Parametern eine häufige Aufgabe, insbesondere wenn wir dynamisch URLs entsprechend unterschiedlichen Anforderungen erzeugen und modifizieren müssen. Die Funktion http_build_query und das $ _get -Array sind zwei gängige Tools, die uns helfen, URL -Parameter problemlos zu erstellen. Heute werden wir diskutieren, wie man beide kombiniert, um einen einfacheren Weg zu verwenden, um URL -Parameter zu spleißen und zu manipulieren.
http_build_query ist eine integrierte Funktion in PHP, die ein assoziatives Array oder ein mehrdimensionales Array aufnimmt und es in eine URL-Abfrage-Zeichenfolge umwandelt. Diese Funktion hilft nicht nur, Abfragungsparameter schnell zu generieren, sondern auch automatisch URLs, um sicherzustellen, dass die Abfragezeichenfolge den URL -Standards entspricht.
<span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-title function_ invoke__">http_build_query</span></span><span> ( </span><span><span class="hljs-keyword">array</span></span><span> </span><span><span class="hljs-variable">$query_data</span></span><span> [, </span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$numeric_prefix</span></span><span> = </span><span><span class="hljs-string">""</span></span><span> [, </span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$arg_separator</span></span><span> = </span><span><span class="hljs-string">"&"</span></span><span> ]] )
</span></span>
$ query_data : Ein assoziatives Array, das Schlüsselwertpaare enthält, wird in eine Abfragezeichenfolge konvertiert.
$ numeric_prefix : Wenn die Tasten im Array Zahlen sind, können Sie diese Schlüssel zum Präfix entscheiden.
$ arg_separator : Gibt den Separator zwischen mehreren Parametern an, Standard ist & .
Angenommen, wir haben ein Array, das mehrere Parameter enthält. Wie spleifen wir diese Parameter in eine vollständige URL -Abfragezeichenfolge? Zu diesem Zeitpunkt kann http_build_query helfen.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-variable">$params</span></span><span> = [
</span><span><span class="hljs-string">'search'</span></span><span> => </span><span><span class="hljs-string">'PHP'</span></span><span>,
</span><span><span class="hljs-string">'page'</span></span><span> => </span><span><span class="hljs-number">2</span></span><span>,
</span><span><span class="hljs-string">'sort'</span></span><span> => </span><span><span class="hljs-string">'asc'</span></span><span>,
</span><span><span class="hljs-string">'category'</span></span><span> => </span><span><span class="hljs-string">'programming'</span></span><span>
];
</span><span><span class="hljs-comment">// Spleißen URL Parameter</span></span><span>
</span><span><span class="hljs-variable">$queryString</span></span><span> = </span><span><span class="hljs-title function_ invoke__">http_build_query</span></span><span>(</span><span><span class="hljs-variable">$params</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$queryString</span></span><span>;
</span><span><span class="hljs-comment">// Ausgabe: search=PHP&page=2&sort=asc&category=programming</span></span><span>
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
Mit dieser Methode können wir problemlos eine Standard -Abfragezeichenfolge erstellen.
Manchmal müssen wir eine vorhandene Basis -URL der Spleißabfrage hinzufügen. Dies kann erreicht werden, indem einfach die Abfragebarstellung an die zugrunde liegende URL angemeldet wird.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-variable">$baseURL</span></span><span> = </span><span><span class="hljs-string">"https://example.com/products?"</span></span><span>;
</span><span><span class="hljs-variable">$params</span></span><span> = [
</span><span><span class="hljs-string">'search'</span></span><span> => </span><span><span class="hljs-string">'PHP'</span></span><span>,
</span><span><span class="hljs-string">'page'</span></span><span> => </span><span><span class="hljs-number">2</span></span><span>,
</span><span><span class="hljs-string">'sort'</span></span><span> => </span><span><span class="hljs-string">'asc'</span></span><span>,
</span><span><span class="hljs-string">'category'</span></span><span> => </span><span><span class="hljs-string">'programming'</span></span><span>
];
</span><span><span class="hljs-comment">// Spleißen查询字符串</span></span><span>
</span><span><span class="hljs-variable">$queryString</span></span><span> = </span><span><span class="hljs-title function_ invoke__">http_build_query</span></span><span>(</span><span><span class="hljs-variable">$params</span></span><span>);
</span><span><span class="hljs-comment">// Vollständig URL</span></span><span>
</span><span><span class="hljs-variable">$fullURL</span></span><span> = </span><span><span class="hljs-variable">$baseURL</span></span><span> . </span><span><span class="hljs-variable">$queryString</span></span><span>;
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$fullURL</span></span><span>;
</span><span><span class="hljs-comment">// Ausgabe: https://example.com/products?search=PHP&page=2&sort=asc&category=programming</span></span><span>
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
$ _Get ist ein PHP -Hyperglobal -Array, das den Wert einer Abfragezeichenfolge in der URL erhält. Wenn ein Benutzer auf eine URL mit Abfrageparametern zugreift, analysiert $ _get diese Parameter automatisch in ein Array. Wenn Sie beispielsweise https://example.com/?search=php&page=2 besuchen, können Sie den Wert der Parameter -Suche über $ _get ['Search'] erhalten.
Angenommen, wir möchten alle Parameter in der aktuellen URL erhalten und nach Bedarf neue Parameter ändern oder hinzufügen.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// Angenommen, der Strom URL für: https://example.com/?search=PHP&page=2</span></span><span>
</span><span><span class="hljs-comment">// $_GET 数组会自动包含查询Parameter</span></span><span>
</span><span><span class="hljs-variable">$currentParams</span></span><span> = </span><span><span class="hljs-variable">$_GET</span></span><span>;
</span><span><span class="hljs-comment">// 添加新的Parameter</span></span><span>
</span><span><span class="hljs-variable">$currentParams</span></span><span>[</span><span><span class="hljs-string">'sort'</span></span><span>] = </span><span><span class="hljs-string">'desc'</span></span><span>;
</span><span><span class="hljs-comment">// verwenden http_build_query Spleißen更新后的查询字符串</span></span><span>
</span><span><span class="hljs-variable">$newQueryString</span></span><span> = </span><span><span class="hljs-title function_ invoke__">http_build_query</span></span><span>(</span><span><span class="hljs-variable">$currentParams</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$newQueryString</span></span><span>;
</span><span><span class="hljs-comment">// Ausgabe: search=PHP&page=2&sort=desc</span></span><span>
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
Manchmal möchten wir nur einen bestimmten Parameter in der URL ändern, anstatt die gesamte Abfragezeichenfolge wieder aufzubauen. Sie können eine neue Abfragebarstellung generieren, indem Sie den entsprechenden Schlüssel im $ _get -Array ändern und dann http_build_query verwenden.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// Angenommen, der Strom URL für: https://example.com/?search=PHP&page=2</span></span><span>
</span><span><span class="hljs-comment">// 获取当前Parameter</span></span><span>
</span><span><span class="hljs-variable">$currentParams</span></span><span> = </span><span><span class="hljs-variable">$_GET</span></span><span>;
</span><span><span class="hljs-comment">// 修改某个Parameter</span></span><span>
</span><span><span class="hljs-variable">$currentParams</span></span><span>[</span><span><span class="hljs-string">'page'</span></span><span>] = </span><span><span class="hljs-number">3</span></span><span>;
</span><span><span class="hljs-comment">// verwenden http_build_query Generieren Sie eine neue Abfragezeichenfolge</span></span><span>
</span><span><span class="hljs-variable">$newQueryString</span></span><span> = </span><span><span class="hljs-title function_ invoke__">http_build_query</span></span><span>(</span><span><span class="hljs-variable">$currentParams</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$newQueryString</span></span><span>;
</span><span><span class="hljs-comment">// Ausgabe: search=PHP&page=3</span></span><span>
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
http_build_query unterstützt auch die Verarbeitung mehrdimensionaler Arrays. Wenn Sie ein verschachteltes Array haben, wird die Funktion automatisch abgeflacht und eine Abfragezeichenfolge erzeugt, die den Kriterien entspricht.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-variable">$params</span></span><span> = [
</span><span><span class="hljs-string">'search'</span></span><span> => </span><span><span class="hljs-string">'PHP'</span></span><span>,
</span><span><span class="hljs-string">'filters'</span></span><span> => [
</span><span><span class="hljs-string">'category'</span></span><span> => </span><span><span class="hljs-string">'programming'</span></span><span>,
</span><span><span class="hljs-string">'price'</span></span><span> => </span><span><span class="hljs-string">'low'</span></span><span>
]
];
</span><span><span class="hljs-comment">// verwenden http_build_query Spleißen多维数组</span></span><span>
</span><span><span class="hljs-variable">$queryString</span></span><span> = </span><span><span class="hljs-title function_ invoke__">http_build_query</span></span><span>(</span><span><span class="hljs-variable">$params</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$queryString</span></span><span>;
</span><span><span class="hljs-comment">// Ausgabe: search=PHP&filters%5Bcategory%5D=programming&filters%5Bprice%5D=low</span></span><span>
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
In diesem Beispiel verarbeitet http_build_query automatisch verschachtelte Arrays und generiert Ergebnisse, die dem URL -Abfrage -String -Format entsprechen.
http_build_query und $ _get -Arrays sind sehr praktische Tools in PHP und helfen uns, die Verarbeitung von URL -Parametern zu vereinfachen. Durch die Verwendung dieser Tools können wir URL-Parameter effizient spleißen, vorhandene Parameter ändern und sogar komplexe mehrdimensionale Arrays verarbeiten. Wenn Sie diese Fähigkeiten beherrschen, können Sie das doppelte Ergebnis mit der halben Anstrengung während des Entwicklungsprozesses erzielen.