আমি একটি স্ট্রিং থেকে নম্বরগুলি বের করতে চাই যার মধ্যে নম্বর এবং অক্ষর রয়েছে:
"In My Cart : 11 items"
আমি এখানে নম্বর 11
বা অন্য কোনও নম্বর পেতে চাই ।
আমি একটি স্ট্রিং থেকে নম্বরগুলি বের করতে চাই যার মধ্যে নম্বর এবং অক্ষর রয়েছে:
"In My Cart : 11 items"
আমি এখানে নম্বর 11
বা অন্য কোনও নম্বর পেতে চাই ।
উত্তর:
$str = 'In My Cart : 11 12 items';
preg_match_all('!\d+!', $str, $matches);
print_r($matches);
$newstr = preg_replace('!\d+!', '', $str);
। এটি আপনার স্ট্রিং থেকে সমস্ত অঙ্ক সরিয়ে দেবে। উদাহরণ: $str = 'In My Cart : 11 12 items';
আউটপুট হবে In My Cart : items
।
preg_replace("/[^0-9]/","",$string);
বাfilter_var($str, FILTER_SANITIZE_NUMBER_INT);
filter_var($str, FILTER_SANITIZE_NUMBER_INT);
অঙ্কগুলি, প্লাস এবং বিয়োগ চিহ্ন। রেজেক্স কেবলমাত্র অঙ্কগুলি বের করেছে!
আপনি যদি কেবলমাত্র সংখ্যাগুলি বাদে সমস্ত কিছু ফিল্টার করতে চান তবে ফিল্টার_ভার ব্যবহার করা সবচেয়ে সহজ :
$str = 'In My Cart : 11 items';
$int = (int) filter_var($str, FILTER_SANITIZE_NUMBER_INT);
xxx-yyy-24
পাবেন --24
। আপনি str_repleace(array('+','-'), '', $result)
উভয় লক্ষণ মুছতে ব্যবহার করতে পারেন ।
max(0,filter_var($str, FILTER_SANITIZE_NUMBER_INT))
অ্যারে এবং স্ট্রিং প্রতিস্থাপন ব্যবহার করে কেবল তা করতে পারেন ।
abs((int) filter_var($str, FILTER_SANITIZE_NUMBER_INT));
preg_replace('/[^0-9]/', '', $string);
এটি আরও ভাল কাজ করা উচিত! ...
500.00
মুদ্রণ করবে:50000
extract the numbers from a string
- দশমিক বিন্দু কোনও সংখ্যা নয়!
'
ডাবল উদ্ধৃতি নয় একক উদ্ধৃতি ব্যবহার করতে চান "
।
ব্যবহার preg_replace
:
$str = '(111) 111-1111';
$str = preg_replace('/\D/', '', $str);
echo $str;
আউটপুট: 1111111111
+387 (61) 634-783
স্ট্রিংকে 38761634783
সরাসরি রূপান্তর করে। গৌরবের উত্তরের মতো অ্যারেগুলির আপনাকে যত্ন নিতে হবে না।
+
কোয়ানটিফায়ারকে দীর্ঘতর ম্যাচগুলি / আরও কম প্রতিস্থাপনের সাথে ম্যাচ করার পরামর্শ দিই ।
ভাসমান সংখ্যার জন্য,
preg_match_all('!\d+\.?\d+!', $string ,$match);
ভুল উল্লেখ করার জন্য ধন্যবাদ। @mickmackusa
'!\d*.?\d+!'
?
আক্ষরিক বিন্দুর পরিমান হিসাবে ব্যবহার করতে পছন্দ করব আমি একাধিক দশমিক পয়েন্ট প্রতীক ধারণ করতে একটি ভাসমান মান আশা করব না। ইয়াশের মন্তব্য করা প্যাটার্নটি ব্যঙ্গাত্মকভাবে ভুল । আক্ষরিক আকার তৈরি করতে ডটটির সামনে একটি স্ল্যাশ দরকার।
আমি এর কৃতিত্বের মালিক নই, তবে আমাকে এটি ভাগ করতে হবে। এই রেজেক্স দশমিক পয়েন্ট / স্থানগুলি সহ কমাগুলি সহ একটি স্ট্রিং থেকে নম্বরগুলি পাবে:
/((?:[0-9]+,)*[0-9]+(?:\.[0-9]+)?)/
এখান থেকে উদ্ধৃত:
পিএইচপি - রেজেক্স - একটি স্ট্রিং (যেমন 1,120.01) থেকে দশমিক (ডট এবং কমা) দিয়ে একটি সংখ্যা কীভাবে বের করবেন?
আপনি preg_match ব্যবহার করতে পারেন :
$s = "In My Cart : 11 items";
preg_match("|\d+|", $s, $m);
var_dump($m);
echo '<p>'.$m[0].'</p>';
পূর্ববর্তী স্থান ব্যবহার করা হচ্ছে
$str = 'In My Cart : 11 12 items';
$str = preg_replace('/\D/', '', $str);
echo $str;
+
কোয়ানটিফায়ারকে দীর্ঘতর ম্যাচগুলি / আরও কম প্রতিস্থাপনের সাথে ম্যাচ করার পরামর্শ দিই ।
আপনি নিম্নলিখিত ফাংশন ব্যবহার করতে পারেন:
function extract_numbers($string)
{
preg_match_all('/([\d]+)/', $string, $match);
return $match[0];
}
\d
চরিত্র শ্রেণীর ভিতরে লেখার কোনও লাভ নেই । যেহেতু আপনি পুরো স্ট্রিং ম্যাচে অ্যাক্সেস করছেন তাই প্যাটার্নে ক্যাপচার গ্রুপ লেখার কোনও বুদ্ধি নেই।
preg_match_all('!\d+!', $some_string, $matches);
$string_of_numbers = implode(' ', $matches[0]);
এই নির্দিষ্ট ক্ষেত্রে ইমপ্লোডে প্রথম যুক্তি বলছে "ম্যাচগুলিতে প্রতিটি উপাদান আলাদা করে [0] একক স্পেস দিয়ে।" ইমপ্লোড প্রথম সংখ্যার আগে বা শেষ সংখ্যার পরে কোনও স্থান (বা আপনার প্রথম যুক্তি যাই হোক না কেন) রাখবে না।
অন্য কিছু লক্ষণীয় $ ম্যাচগুলি [0] হ'ল যেখানে পাওয়া যায় ম্যাচের অ্যারেগুলি (যা এই নিয়মিত অভিব্যক্তির সাথে মেলে) সঞ্চিত থাকে।
অ্যারের অন্যান্য সূচীগুলি কী কী তা সম্পর্কে আরও স্পষ্টতার জন্য দেখুন: http://php.net/manual/en/function.preg-match-all.php
এটি ব্যবহার করে দেখুন, প্রাক-স্থানটি ব্যবহার করুন
$string = "Hello! 123 test this? 456. done? 100%";
$int = intval(preg_replace('/[^0-9]+/', '', $string), 10);
echo $int;
[^0-9]
আরও সহজ হিসাবে লেখা হয় \D
।
আমরা এটির মতো ইন্ট্র্যাক্ট করতে পারি
$string = 'In My Car_Price : 50660.00';
echo intval(preg_replace('/[^0-9.]/','',$string)); # without number format output: 50660
echo number_format(intval(preg_replace('/[^0-9.]/','',$string))); # with number format output :50,660
ডেমো: http://sandbox.onlinephpfunitions.com/code/82d58b5983e85a0022a99882c7d0de90825aa398
এই পদক্ষেপটি অনুসরণ করুন এটি স্ট্রিংকে সংখ্যায় রূপান্তর করবে
$value = '$0025.123';
$onlyNumeric = filter_var($value, FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION);
settype($onlyNumeric,"float");
$result=($onlyNumeric+100);
echo $result;
এটি করার আরেকটি উপায়:
$res = preg_replace("/[^0-9.]/", "", "$15645623.095605659");
অন্য উপায়ে (এমনকি ইউনিকোড স্ট্রিং):
$res = array();
$str = 'test 1234 555 2.7 string ..... 2.2 3.3';
$str = preg_replace("/[^0-9\.]/", " ", $str);
$str = trim(preg_replace('/\s+/u', ' ', $str));
$arr = explode(' ', $str);
for ($i = 0; $i < count($arr); $i++) {
if (is_numeric($arr[$i])) {
$res[] = $arr[$i];
}
}
print_r($res); //Array ( [0] => 1234 [1] => 555 [2] => 2.7 [3] => 2.2 [4] => 3.3 )
এই স্ক্রিপ্টটি প্রথমে একটি ফাইল তৈরি করে, একটি লাইনে নম্বর লিখুন এবং সংখ্যা ছাড়া অন্য কোনও অক্ষর পেলে পরবর্তী লাইনে পরিবর্তিত হয়। শেষ অবধি, আবার এটি একটি তালিকাতে সংখ্যাগুলি বাছাই করে।
string1 = "hello my name 12 is after 198765436281094and14 and 124de"
f= open("created_file.txt","w+")
for a in string1:
if a in ['1','2','3','4','5','6','7','8','9','0']:
f.write(a)
else:
f.write("\n" +a+ "\n")
f.close()
#desired_numbers=[x for x in open("created_file.txt")]
#print(desired_numbers)
k=open("created_file.txt","r")
desired_numbers=[]
for x in k:
l=x.rstrip()
print(len(l))
if len(l)==15:
desired_numbers.append(l)
#desired_numbers=[x for x in k if len(x)==16]
print(desired_numbers)
আপনার ব্যবহারের ক্ষেত্রে নির্ভর করে এটি একটি বিকল্পও হতে পারে:
$str = 'In My Cart : 11 items';
$num = '';
for ($i = 0; $i < strlen($str); $i++) {
if (is_numeric($str[$i])) {
$num .= $str[$i];
}
}
echo $num; // 11
যদিও আমি একটি রেইজেক্সকে রাজি করতাম বা filter_var()
বর্ণিত ক্ষেত্রে আরও কার্যকর হব।
utf8 স্ট্রের জন্য:
function unicodeStrDigits($str) {
$arr = array();
$sub = '';
for ($i = 0; $i < strlen($str); $i++) {
if (is_numeric($str[$i])) {
$sub .= $str[$i];
continue;
} else {
if ($sub) {
array_push($arr, $sub);
$sub = '';
}
}
}
if ($sub) {
array_push($arr, $sub);
}
return $arr;
}
আপনি যদি না জানেন তবে কোন ফর্ম্যাটটি নম্বর? int বা ভাসমান, তারপরে এটি ব্যবহার করুন:
$string = '$125.22';
$string2 = '$125';
preg_match_all('/(\d+.?\d+)/',$string,$matches); // $matches[1] = 125.22
preg_match_all('/(\d+.?\d+)/',$string2,$matches); // $matches[1] = 125
এই ফাংশনগুলি ভাসমান সংখ্যাগুলিও পরিচালনা করবে
$str = "Doughnuts, 4; doughnuts holes, 0.08; glue, 3.4";
$str = preg_replace('/[^0-9\.]/','-', $str);
$str = preg_replace('/(\-+)(\.\.+)/','-', $str);
$str = trim($str, '-');
$arr = explode('-', $str);