Saya membuat halaman pencarian, tempat Anda mengetik permintaan pencarian dan formulir dikirimkan search.php?query=your query
. Fungsi PHP apa yang terbaik dan yang harus saya gunakan untuk encoding / decoding permintaan pencarian?
97
foo bar
di bidang teks, membuatfoo+bar
di URL).file_get_contents
Jawaban:
Untuk kueri URI, gunakan
urlencode
/urldecode
; untuk hal lain, gunakanrawurlencode
/rawurldecode
.Perbedaan antara
urlencode
danrawurlencode
apakah ituurlencode
mengkodekan sesuai dengan aplikasi / x-www-form-urlencoded (spasi dikodekan dengan+
) sementararawurlencode
mengkodekan sesuai dengan Percent-Encoding biasa (spasi dikodekan dengan%20
).sumber
+
bukan%20
. Dan selain itu, application / x-www-form-urlencoded digunakan untuk menyandikan data formulir sedangkan Percent-Encoding memiliki penggunaan yang lebih umum.urldecode
. Lalu, bagaimana dengan jalur URI (misalnya/a/path with spaces/
) dan fragmen URI (misalnya#fragment
). Haruskah saya selalu menggunakanrawurldecode
untuk keduanya?rawurlencode
; tetapi untuk bidang POST dan GETurlencode
Urlencode () dan urldecode () dengan nama licik .
Namun, Anda tidak perlu menggunakan
urldecode()
variabel yang muncul di$_POST
dan$_GET
.sumber
"name=b&age=c&location=d"
) yang dikirim ke file PHP melalui AJAX?Inilah kasus penggunaan saya, yang membutuhkan jumlah encoding yang luar biasa. Mungkin Anda mengira itu dibuat-buat, tetapi kami menjalankan ini pada produksi. Secara kebetulan, ini mencakup setiap jenis pengkodean, jadi saya memposting sebagai tutorial.
Gunakan deskripsi kasus
Seseorang baru saja membeli kartu hadiah prabayar ("token") di situs web kami. Token memiliki URL yang sesuai untuk ditebus. Pelanggan ini ingin mengirim URL ke email orang lain. Halaman web kami menyertakan
mailto
tautan yang memungkinkan mereka melakukan itu.Kode PHP
Catatan: di atas mengasumsikan Anda mengeluarkan ke
text/html
dokumen. Jika jenis media keluaran Andatext/json
hanya digunakan$retval['url'] = $mailToUri;
karena pengkodean keluaran ditangani olehjson_encode()
.Kasus cobaan
Anda harus melihat:
Dan tentunya ini adalah representasi JSON di
$token
atas.sumber
mailto:
bukan HTTP), Anda dapat menggunakan$mailToUri 'mailto:?' . http_build_query(['subject'=>$subject, 'body'=>$body], null, '&', PHP_QUERY_RFC3986);
.Anda dapat menggunakan Fungsi Pengkodean URL yang dimiliki PHP
fungsi
ASP memiliki ekstensi
fungsi
Di JavaScript, Anda dapat menggunakan
fungsi.
sumber
Berdasarkan jenis pengkodean standar RFC apa yang ingin Anda lakukan atau jika Anda perlu menyesuaikan pengkodean Anda, Anda mungkin ingin membuat kelas Anda sendiri.
Gunakan contoh:
Akan menghasilkan:
* Cari tahu lebih lanjut tentang standar RFC: https://datatracker.ietf.org/doc/rfc3986/ dan urlencode vs rawurlencode?
sumber