একটি স্ট্রিং থেকে অ-সংখ্যাসূচক অক্ষর (পিরিয়ড এবং কমা ব্যতীত) সরিয়ে ফেলুন


150

আমার যদি নিম্নলিখিত মান থাকে:

 $var1 = AR3,373.31

 $var2 = 12.322,11T

আমি কীভাবে একটি নতুন ভেরিয়েবল তৈরি করতে পারি এবং কমা এবং পিরিয়ড ব্যতীত কোনও অ-সংখ্যাযুক্ত অক্ষর মুছে ফেলা ডেটার অনুলিপিতে সেট করতে পারি? উপরের মানগুলি নিম্নলিখিত ফলাফলগুলি ফিরিয়ে আনবে:

 $var1_copy = 3,373.31

 $var2_copy = 12.322,11

উত্তর:


335

আপনি সমস্ত অ সংখ্যাযুক্ত অক্ষর এবং কমা এবং পিরিয়ড / পুরো স্টপ নীচে হিসাবে পরিবর্তন করতে preg_replace ব্যবহার করতে পারেন :

<?php
    $testString = '12.322,11T';
    echo preg_replace('/[^0-9,.]/', '', $testString);
?>

6
পিএইচপি ফাংশন মানি ফাংশন () ( php.net/manual/en/function.money-format.php ) দেখুন
horatio

5
[^ 0-9] কোনও অ-সংখ্যাসূচক চরিত্রের সাথে মিলবে, সুতরাং কমা এবং সম্পূর্ণ স্টপ যুক্ত করার প্রয়োজন নেই। এটি যথেষ্ট: প্রতিধ্বনি প্রিগ_রেপ্লেস ('/ [^ 0-9] /', '', $ টেস্টস্ট্রিং);
বিলিচার্ডস

6
@ বিলিচার্ডস আমি এটিকে সঠিক মনে করি না। মনে রাখবেন তিনি অঙ্কিত অক্ষর সহ কমা এবং সম্পূর্ণ স্টপ ধরে রাখতে চান, সেগুলি মুছে ফেলেন না।
রিচট 222

1
@ বিল্রিচার্ডস যেমন ওপি বলেছে (জোর দেওয়া খনি), " কমা এবং বিন্দু বাদে বর্ণমালা বা অক্ষরগুলি এড়িয়ে চলুন "।
জন পার্কার

সেই পিরিয়ডের কি ব্যাকস্ল্যাশ দরকার নেই? পিরিয়ড মানে "কোনও চরিত্র" তাই না?
স্কট

66

আমি অবাক হয়েছি যে এখানে এত পুরানো প্রশ্ন হওয়ার জন্য এখানে ফিল্টার_ভারের কোনও উল্লেখ নেই ...

স্যানিটাইজেশন ফিল্টার ব্যবহার করে পিএইচপি এর একটি পদ্ধতি রয়েছে । বিশেষ করে, এই অবস্থায় ব্যবহার করার জন্য অন্যতম FILTER_SANITIZE_NUMBER_FLOATসঙ্গে FILTER_FLAG_ALLOW_FRACTION | FILTER_FLAG_ALLOW_THOUSANDপতাকা। তাই ভালো:

$numeric_filtered = filter_var("AR3,373.31", FILTER_SANITIZE_NUMBER_FLOAT,
    FILTER_FLAG_ALLOW_FRACTION | FILTER_FLAG_ALLOW_THOUSAND);
echo $numeric_filtered; // Will print "3,373.31"

এটি লক্ষণীয়ও উপযুক্ত হতে পারে যেহেতু এটি পিএইচপি-তে অন্তর্নির্মিত, এটি পিএইচপি-র বর্তমান লাইব্রেরিগুলিতে (আক্ষরিকভাবে ন্যানোসেকেন্ডে থাকলেও) রিজেক্স ব্যবহারের চেয়ে কিছুটা দ্রুত।


2
আইএমও এটি সেরা উত্তর।
ওজিয়ার শেলভিস

30

সমস্ত অ-সংখ্যাসূচক অক্ষরকে সত্যই সরানোর সহজ উপায়:

echo preg_replace('/\D/', '', $string);

\D "দশমিক সংখ্যা নয় এমন কোনও চরিত্র" উপস্থাপন করে

http://php.net/manual/en/regexp.reference.escape.php


এটি অত্যন্ত উত্তরের উত্তর :)
বারন_বারটেক 21'19

4

আপনি filter_varঅঙ্ক, বিন্দু এবং কমা ব্যতীত সমস্ত অবৈধ অক্ষর অপসারণ করতে ব্যবহার করতে পারেন।

  • FILTER_SANITIZE_NUMBER_FLOATফিল্টার স্ট্রিং থেকে সমস্ত নন-সাংখ্যিক অক্ষর মুছে ফেলার জন্য ব্যবহার করা হয়।
  • FILTER_FLAG_ALLOW_FRACTION ভগ্নাংশ বিভাজককে অনুমতি দিচ্ছে " . "
  • FILTER_FLAG_ALLOW_THOUSANDস্ট্রিং থেকে কমা পাওয়ার উদ্দেশ্য ।

কোড

$var1 = '12.322,11T';

echo filter_var($var1, FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION | FILTER_FLAG_ALLOW_THOUSAND);

আউটপুট

12.322,11

ফিল্টার_ভার () এবং স্যানিটাইজ ফিল্টারগুলি সম্পর্কে আরও পড়তে


2

যদি অনুরোধটি হয় সমস্ত (এবং কেবল একটিই নয়) অ সংখ্যাগত চর মুছে ফেলতে, তবে সম্ভবত পূর্ববর্তীটি খুব সাধারণ উপায়ে এইভাবে লেখা যেতে পারে (তবে আপনি স্ট্রিংটি পাস করার জন্য একটি ফাংশন লিখতে এবং অক্ষর ছাড়াই প্রয়োজনীয় মানটি ফিরিয়ে দিতে পারেন) .. যাইহোক ..):

<?php
$String1 = 'AR3,373.31';
$String2 = '12.322,11T';

echo preg_replace('/[^0-9,.]+/i', '', $String1);
echo preg_replace('/[^0-9,.]+/i', '', $String2);
?>

1

যদি অক্ষরগুলি সর্বদা শুরুতে বা শেষে থাকে তবে আপনি কেবল ছাঁটাই ব্যবহার করতে পারেন ... কোনও রেজেক্সের প্রয়োজন নেই

$string = trim($string, "a..zA..Z"); // this also take care of lowercase

"AR3,373.31" --> "3,373.31"
"12.322,11T" --> "12.322,11"
"12.322,11"  --> "12.322,11"

গুরুত্বপূর্ণ: এটি কেবল স্ট্রিং থেকে বর্ণগুলি সরিয়ে ফেলবে। অন্যান্য অক্ষর, যেমন ফাঁকা স্থান, বন্ধনী, উদ্ধৃতি ইত্যাদি ফলাফলের মধ্যে রাখা হয়। -> কেবলমাত্র এই সমাধানটি ব্যবহার করুন, আপনি যদি জানেন যে আপনার ইনপুট স্ট্রিংয়ে কেবল অক্ষর এবং সংখ্যা রয়েছে এবং অন্য কোনও অক্ষর নেই!
ফিলিপ

-1

মিদপর্ব হিসাবে একই উত্তর কিন্তু মুছে ফেলুন,.

$unformatted_phone = "phone 122-3222223.ext 442";
echo preg_replace("/[^0-9]/", "", $unformatted_phone);

পোস্টগুলিতে আপনার ব্লগ / সাইটের লিঙ্কগুলি যুক্ত করবেন না দয়া করে। এটি স্প্যাম হিসাবে বিবেচনা করা যেতে পারে।
তুষার

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