Saya ingin output berikut: -
Akan mengurangi 50% dari € 27,59 dari akun Top-Up Anda.
ketika saya melakukan sesuatu seperti ini: -
$variablesArray[0] = '€';
$variablesArray[1] = 27.59;
$stringWithVariables = 'About to deduct 50% of %s %s from your Top-Up account.';
echo vsprintf($stringWithVariables, $variablesArray);
Tapi itu memberi saya kesalahan ini vsprintf() [function.vsprintf]: Too few arguments in ...
karena menganggap %
di 50%
juga untuk penggantian. Bagaimana saya bisa menghindarinya?
escape
atauescaping
keduanyaphp.net/printf
danphp.net/vsprintf
keduanya tidak segera menunjukkan jawaban. Ketika saya mencari%%
itu menunjukkan jawabannya di php.net/printf tapi saya tidak tahu%%
!!! Apakah Anda mencari jawaban di sana sebelum downvoting?vsprintf
termasuk dalam keluarga fungsi yang sama denganprintf
. Dokumentasi yang benar untuk menemukan formatnya adalah php.net/sprintf . Kedua halaman bahkan menunjuk ke sana: "Lihat sprintf () untuk deskripsi format." Setidaknya Anda tidak mengkliknya?With printf() and sprintf() functions, escape character is not backslash '\' but rather '%'.
Apa yang harus di-downvote di sini? Bagi saya itu tidak terlalu jelas bagi saya. Jika Anda menemukan pertanyaan rangkap, Anda dapat menulis tautan dengan lebih baik. Tetapi saya yakin banyak orang akan menganggap pertanyaan ini bermanfaat. Tetapi Anda tidak akan menerima itu dan Anda masih akan mengatakan sesuatu, saya tahu.Jawaban:
Kabur dengan yang lain
%
:sumber
sprintf('This is %s.', the_title())
str_replace('%', '%%', the_title())
Ini sangat mudah.
Letakkan yang lain
%
di depan dokumen asli%
untuk menghindarinya.Sebagai contoh,
Keluaran:
sumber
Bagaimana dengan ini:
Cukup tambahkan tanda persen Anda di array variabel Anda
sumber