পিএইচপি স্প্রিন্টফ%


184

আমি নিম্নলিখিত আউটপুট চাই: -

আপনার টপ-আপ অ্যাকাউন্ট থেকে .5 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 আমার প্রশ্নটি vspintsf প্রিন্টফ নয়, আমি এটি প্রথমবার ব্যবহার করছি এবং দুজনের মধ্যে মিল খুঁজে নিতে পারি না। তবে অনুসন্ধান escapeবা escapingউভয় php.net/printfএবং php.net/vsprintfউভয়ই তত্ক্ষণাত উত্তরটি দেখায় না। যখন আমি %%এটি অনুসন্ধান করি তখন php.net/printf এ উত্তরটি দেখায় কিন্তু আমি জানতাম না %%!!! ডাউনভোটিংয়ের আগে আপনি কি উত্তরটি অনুসন্ধান করেছেন?
সন্দীপন নাথ

@ সন্দীপন: vsprintfএকই কার্যক্রমে একই পরিবারে অন্তর্ভুক্ত printf। ফর্ম্যাটটি সন্ধান করার জন্য সঠিক ডকুমেন্টেশন, যদিও, পিএইচপিএন / স্প্রিন্টফ । উভয় পৃষ্ঠাই এটিকে নির্দেশ করে: "বিন্যাসের বর্ণনার জন্য স্প্রিন্টফ () দেখুন" " আপনি কি কমপক্ষে এটি ক্লিক করেননি?
BoltClock

5
@Col। Shrapnel ঠিক আছে ঠিক আছে চলুন পিএইচপিএন / স্প্রিন্টফ নেওয়া যাক, উত্তর কোথায়? এটি পৃষ্ঠার অর্ধেক নীচে With printf() and sprintf() functions, escape character is not backslash '\' but rather '%'.এখানে ডাউনওয়োটে কী আছে? আপনার কাছে যেমন ছিল ঠিক তেমনি তা আমার কাছে স্পষ্টও ছিল না। যদি কোনও সদৃশ প্রশ্ন পাওয়া যায় তবে আপনি লিঙ্কটি আরও ভালভাবে লিখতে পারেন। তবে আমি নিশ্চিত যে অনেকে এই প্রশ্নকে সহায়ক মনে করবে। তবে আপনি তা গ্রহণ করবেন না এবং আপনি এখনও কিছু বলবেন, আমি জানি।
সন্দীপন নাথ

ওহ আমি ভেবেছিলাম দ্বিতীয় মন্তব্য কর্নেল শ্র্যাপেলের দ্বারা হয়েছিল, দুঃখিত
সন্দীপন নাথ

3
আরটিএফএম প্রতিক্রিয়াগুলির জন্য SO এর পতাকা থাকা উচিত। এটি প্রায় লোকেদের ট্রল করার মতো, যাতে তারা লোককে ডক্সটি পড়তে বলতে পারে। তার সাহায্যের প্রয়োজন এবং একটি প্রশ্ন জিজ্ঞাসা করলেন এবং তারপরে কেউ সাহায্যের জবাব দিয়েছিল এবং এর জন্য পয়েন্ট পেয়েছে। বিশ্ব চলল এবং ইন্টারনেট কারও সুবিধার জন্য ব্যবহৃত হয়েছিল। এদিকে আমি দুই বছরের পুরনো তর্ককে কেন্দ্র করে উত্তপ্ত হয়ে উঠছি।
rob5408

উত্তর:


343

এটির সাথে অন্যকে পালাতে %:

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

22
স্প্রিন্টফ ("নির্বাচন করুন থেকে * নির্বাচন করুন ... যেখানে নাম '%%% s %%% s %%'", $ fname, $ lname) পছন্দ করুন; - কুৎসিত কিন্তু এটি কাজ করে!
জান হেটিচ

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);

আপনার ভেরিয়েবল অ্যারেতে আপনার শতাংশ চিহ্নটি যুক্ত করুন

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.