Chcę następujące dane wyjściowe: -
O odliczenie 50% z 27,59 € z konta doładowania.
kiedy robię coś takiego: -
$variablesArray[0] = '€';
$variablesArray[1] = 27.59;
$stringWithVariables = 'About to deduct 50% of %s %s from your Top-Up account.';
echo vsprintf($stringWithVariables, $variablesArray);
Ale to daje mi ten błąd vsprintf() [function.vsprintf]: Too few arguments in ...
, ponieważ uważa, że %
in 50%
również do wymiany. Jak mogę uciec?
escape
lubescaping
jednophp.net/printf
iphp.net/vsprintf
drugie nie pokazuje odpowiedzi natychmiast. Kiedy szukam%%
, pokazuje odpowiedź na php.net/printf, ale nie wiedziałem o tym%%
!!! Czy szukałeś odpowiedzi przed oddaniem głosu?vsprintf
należy do tej samej rodziny funkcji coprintf
. Prawidłową dokumentacją do znalezienia formatu jest jednak php.net/sprintf . Obie strony nawet wskazują na to: „Zobacz sprintf (), aby uzyskać opis formatu.” Nie kliknąłeś go przynajmniej?With printf() and sprintf() functions, escape character is not backslash '\' but rather '%'.
Co można tutaj głosować? To po prostu nie było dla mnie tak oczywiste jak dla ciebie. Jeśli znajdziesz duplikat pytania, możesz lepiej napisać link. Ale jestem pewien, że wielu uzna to pytanie za pomocne. Ale nie zaakceptujesz tego i nadal coś powiesz, wiem.Odpowiedzi:
Ucieknij z innym
%
:źródło
sprintf('This is %s.', the_title())
str_replace('%', '%%', the_title())
To bardzo łatwe.
Umieść inny
%
przed oryginałem,%
aby go uciec.Na przykład,
Wynik:
źródło
A co z tym:
Wystarczy dodać znak procentu do tablicy zmiennych
źródło