PHP स्प्रिंटफ% से बच


184

मुझे निम्नलिखित आउटपुट चाहिए: -

अपने टॉप-अप खाते से € 27.59 का 50% कटौती करने के बारे में।

जब मैं ऐसा कुछ करता हूं: -

$variablesArray[0] = '€';
$variablesArray[1] = 27.59;
$stringWithVariables = 'About to deduct 50% of %s %s from your Top-Up account.';
echo vsprintf($stringWithVariables, $variablesArray);

लेकिन यह मुझे इस त्रुटि देता है vsprintf() [function.vsprintf]: Too few arguments in ...क्योंकि यह मानता है %में 50%बदलने के लिए भी। मैं इससे कैसे बचूं?


1
@Col। Shrapnel मेरा प्रश्न vsprintf नहीं Printf के बारे में है, मैं पहली बार इसका उपयोग कर रहा हूं और दोनों के बीच समानता को नहीं मान सकता। हालांकि, खोज escapeया escapingदोनों में php.net/printfऔर php.net/vsprintfदोनों तुरंत जवाब नहीं दिखाते हैं। जब मैं %%इसके लिए खोज php.net/printf में उत्तर दिखाता है, लेकिन मुझे इसके बारे में पता नहीं था %%!!! क्या आपने डाउनवोट करने से पहले वहां जवाब खोजा था?
संदीपन नाथ

@ संदीपन: vsprintfकार्य के एक ही परिवार के अंतर्गत आता है printf। प्रारूप को खोजने के लिए सही प्रलेखन, हालांकि, php.net/sprintf है । दोनों पृष्ठ इसे इंगित भी करते हैं: "प्रारूप के विवरण के लिए स्प्रिंटफ () देखें।" क्या आपने कम से कम इसे क्लिक नहीं किया?
BoltClock

5
@Col। Shrapnel ok ठीक है चलो php.net/sprintf ले लो, जवाब कहां है? यह पृष्ठ का आधा हिस्सा है यहां नीचे की ओर With printf() and sprintf() functions, escape character is not backslash '\' but rather '%'.क्या है? यह मेरे लिए उतना स्पष्ट नहीं था जितना कि यह आपके लिए था। यदि आपको एक डुप्लिकेट प्रश्न मिलता है तो आप लिंक को बेहतर ढंग से लिख सकते हैं। लेकिन मुझे यकीन है कि कई लोग इस सवाल को मददगार पाएंगे। लेकिन आप इसे स्वीकार नहीं करेंगे और आप अभी भी कुछ कहेंगे, मुझे पता है।
संदीपन नाथ

ओह, मैंने सोचा था कि दूसरी टिप्पणी कर्नल श्रापेल ने की, क्षमा करें
संदीपन नाथ

3
SO के पास RTFM प्रतिक्रियाओं के लिए एक ध्वज होना चाहिए। यह लगभग लोगों को ट्रोल करने जैसा है ताकि वे लोगों को डॉक्स पढ़ने के लिए कह सकें। उन्हें मदद की ज़रूरत थी और एक सवाल पूछा और फिर किसी ने मदद का जवाब दिया और इसके लिए अंक प्राप्त किए। दुनिया चली गई और इंटरनेट का उपयोग किसी के लाभ के लिए किया गया। इस बीच मैं दो साल पुराने तर्क पर गर्म हो रहा हूं।
रोब ५४०

जवाबों:


344

दूसरे के साथ यह बच %:

$stringWithVariables = 'About to deduct 50%% of %s %s from your Top-Up account.';

22
स्प्रिंटफ ("सेलेक्ट * FROM ... व्हेयर लाइक नेम '%%% s %%% s %%'", $ fname, $ lname); - बदसूरत लेकिन यह काम करता है!
H

1
यह रूबी
जेमी कुक

आप उस हिस्से को एक और "% s" के साथ जोड़ सकते हैं: स्प्रिंटफ ('% s से आप% s', 'कुछ', '50% 'प्राप्त कर सकते हैं)
लुकास लाइसिस

यदि स्ट्रिंग गतिशील है तो आप इसे कैसे बचा सकते हैं? आइए sprintf('This is %s.', the_title())
बताते

7
@madastrostr_replace('%', '%%', the_title())
Ivanka Todorova

3

यह बहुत आसान है।

इसे बचने %के लिए मूल के सामने एक और रखें %

उदाहरण के लिए,

$num=23;
printf("%%d of 23 = %d",$num);

आउटपुट:

%d of 23 = 23

1

इस बारे में क्या:

$variablesArray[0] = '%';
$variablesArray[1] = '€';
$variablesArray[2] = 27.59;
$stringWithVariables = 'About to deduct 50%s of %s %s from your Top-Up account.';
echo vsprintf($stringWithVariables, $variablesArray);

बस अपने चर सरणी में अपना प्रतिशत चिह्न जोड़ें

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.