PHP Strings & Patterns
PHP String Manipulation পর্ব-১
PHP তে string কি?
PHP String Manipulation: PHP তে String বলতে বুজানো হয় একাধিক ক্যারেক্টার এর ক্রম বা বিন্যাস (Sequence of Characters)। আরো সহজভাবে বলা যায় PHP তে কোন ম্যাসেজ, তথ্য, এমনকি কখনো কখনো সংখ্যাও String এর মাধ্যমে প্রকাশ করা হয়। PHP তে String নির্দেশ করার জন্য ডাবল কোটেশন (” “) এবং সিঙ্গেল কোটেশন (‘ ‘) ব্যবহার করা হয়। যেমন “PHP string by Double quotation.” অথবা ‘PHP string by Single quotation.’ যদি কখনো String এর মধ্যেই ডাবল কোটেশন (” “) অথবা সিঙ্গেল কোটেশন (‘ ‘) ব্যবহার করার প্রয়োজন হয় “Single ‘quoted text’ is displaying in a string.” এর অনুরূপ সিঙ্গেল কোটেশন এবং ‘Double “quoted text” is displaying in a string.’ অনূরূপ ডাবল কোটেশন ব্যবহার করা যাবে।
PHP তে Double Quoted String এবং Single Quoted String এর মধ্যে কোনো পার্থক্য আছে ?
PHP তে Double Quoted যেকোনো String এ PHP Variable ব্যবহার করলে , সেই Variable এর value Print হয়। অন্যদিকে PHP তে Single Quoted যেকোনো String এ PHP Variable ব্যবহার করলে , সেই Variable এর value Print হয় না। অর্থাৎ সরাসরি variable এর নামটি ই print হয়। নিচের উদাহরণটি দেখুন :
<?php $name="Masud Alam"; echo "Hello $name"; //Output: Hello Masud Alam echo "<br>"; echo 'Hello $name'; //Output: Hello $name
PHP তে Heredoc কি?
PHP তে কোনো Double quotation ব্যবহার করা ছাড়াই Double Quoted String কে রিপ্রেজেন্ট করার জন্য Heredoc Syntax ব্যবহার করা হয়।
আরেকটু ভালোভাবে বুঝে নেয়া যাক , ধরুন আপনি একটি function তৈরী করলেন যেটি একটি array কে html table এর মাধ্যমে রিপ্রেজেন্ট করবে। তখন হয়ত আপনি কাজটি নিচের মতো করবেন :
<?php $student=["name"=>"Tonmoy","mobile"=>"017","address"=>"Dhaka,Bangladesh"]; extract($student); $table="<table border='1' cellpadding='5'>"; $table.="<tr>"; $table.="<th>Name: </th><td>$name</td>"; $table.="</tr>"; $table.="<tr>"; $table.="<th>Mobile: </th><td>$mobile</td>"; $table.="</tr>"; $table.="<tr>"; $table.="<th>Address: </th><td>$address</td>"; $table.="</tr>"; $table.="</table>"; echo $table;
অবশ্য এভাবেও করতে পারেন:
<?php $student=["name"=>"Tonmoy","mobile"=>"017","address"=>"Dhaka,Bangladesh"]; extract($student); ?> <table border='1' cellpadding='5'> <tr> <th>Name: </th><td><?=$name;?></td> </tr> <tr> <th>Mobile: </th><td><?=$mobile;?></td> </tr> <tr> <th>Address: </th><td><?=$address;?></td> </tr> </table>
আসলে উপরের দুই পদ্ধতি বৈধ হলেও বেশ কষ্ট সাধ্য আর সময় ও লাগবে বেশি। আর উপরের দুই পদ্ধতির দ্বিতীয়টিকে PHP Heredoc দিয়ে আরো সহজে উপস্থাপন করতে পারেন। চলুন প্রথমে PHP Heredoc Syntax দেখা যাক :
Heredoc Syntax with PHP Variable
$str=<<<string /* Your HTmL Code Here */ string;
Heredoc Syntax with PHP echo
echo <<<string /* Your HTmL Code Here */ string;
এবার চলুন Heredoc দিয়ে একটা উদাহরণ দেখি:
<?php $student=["name"=>"Tonmoy","mobile"=>"017","address"=>"Dhaka,Bangladesh"]; extract($student); echo <<<table <table border='1' cellpadding='5'> <tr> <th>Name: </th> <td>$name</td> </tr> <tr> <th>Mobile: </th> <td>$mobile</td> </tr> <tr> <th>Address: </th> <td>$address</td> </tr> </table> table;
Output
সাবধানতা: heredoc closing এর সময় Left এ কোনো space বা ফাঁকা রাখা যাবেনা।
PHP তে Nowdoc কি?
PHP তে কোনো Single quotation ব্যবহার করা ছাড়াই Single Quoted String কে রিপ্রেজেন্ট করার জন্য Nowdoc Syntax ব্যবহার করা হয়। এবং এটি normal single quote string এর মতোই variable এর value print করতে পারেনা।
Nowdoc Syntax with PHP Variable
$str=<<<'string' /* Your HTmL Code Here */ string;
Nowdoc Syntax with PHP echo
echo <<<'string' /* Your HTmL Code Here */ string;
এবার চলুন Nowdoc দিয়ে একটা উদাহরণ দেখি:
<?php $student=["name"=>"Tonmoy","mobile"=>"017","address"=>"Dhaka,Bangladesh"]; extract($student); echo <<<'table' <table border='1' cellpadding='5'> <tr> <th>Name: </th> <td>$name</td> </tr> <tr> <th>Mobile: </th> <td>$mobile</td> </tr> <tr> <th>Address: </th> <td>$address</td> </tr> </table> table;
Output
একটা String এ total কত গুলো character আছে তা কিভাবে জানবেন?
একটা String এ total কত গুলো character আছে তা জানতে হলে আপনাকে strlen() function টি ব্যবহার করতে হবে। নিচের উদাহরণটি দেখুন :
<?php /*** a simple string ***/ $string = 'My Sonar Bangla, I love you'; echo strlen($string); //Output: 27 ?>
একটা String এ কোন character টি total কতবার আছে তা কিভাবে জানবেন?
একটা String এ কোন character টি মোট কতবার আছে তা জানতে হলে আপনাকে count_chars() function টি ব্যবহার করতে হবে। আর count_chars() function এর প্রথম Parameter টি দিতে হবে একটি string এবং দ্বিতীয় parameter দিতে হবে 1, যেটাকে বলা হয় Mode . তবে count_chars() ফাঙ্কশনটি সরাসরি character কে print করার পরিবর্তে তার ASCII কোড প্রিন্ট করে। আর তাই আপনাকে char() function দিয়ে ASCII কোড কে character এ পরিবর্তন করে নিতে হবে। নিচের উদাহরণটি দেখুন :
<?php $str="My Beloved Bangladesh, I love you"; foreach (count_chars($str, 1) as $i => $val) { echo "<b>".chr($i) , "</b> character have $val times in the string.<br>"; } ?>
Output
character have 5 times in the string. , character have 1 times in the string. B character have 2 times in the string. I character have 1 times in the string. M character have 1 times in the string. a character have 2 times in the string. d character have 2 times in the string. e character have 4 times in the string. g character have 1 times in the string. h character have 1 times in the string. l character have 3 times in the string. n character have 1 times in the string. o character have 3 times in the string. s character have 1 times in the string. u character have 1 times in the string. v character have 2 times in the string. y character have 2 times in the string.
একটা String এর মধ্যে unique character list কিভাবে পাবো?
একটা String এর মধ্যে unique character list অর্থাৎ শুধু মাত্র যেই সব ক্যারেক্টার ব্যবহার হয়েছে, তা পেতে হলেও আপনাকে count_chars() function টি ব্যবহার করতে হবে। তবে সেক্ষেত্রে আপনাকে দ্বিতীয় Parameter এর Mode হিসেবে দিতে হবে 3. নিচের উদাহরণটি দেখুন :
<?php $str="My Beloved Bangladesh, I love you"; echo count_chars($str,3); ?>
Output
,BIMadeghlnosuvy
তবে, যেই সব character ব্যবহার হয় নাই , তার list পেতে হলে আপনাকে mode টি 4 করে দিলেই হবে।
একটা String এ মোট কত গুলো word আছে, তা কিভাবে check করব?
একটা String এ মোট কত গুলো word আছে , তা check করতে হলে আপনাকে str_word_count() ফাঙ্কশন টি ব্যবহার করতে হবে। আর str_word_count() function এর প্রথম Parameter টি দিতে হবে একটি string এবং দ্বিতীয় parameter দিতে হবে 0, যেটাকে বলা হয় Mode . নিচের উদাহরণটি দেখুন :
<?php $str="My Beloved Bangladesh, I love you"; echo str_word_count($str,0); ?>
Output
6
তবে একাজটি আপনি চাইলে explode() এবং count() function ব্যবহার করেও করতে পারেন। মূলতঃ explode() function এর কাজ হচ্ছে string কে Delimiter এর ভিত্তিতে array তে convert করা। আর count() ফাঙ্কশনের কাজ হচ্ছে array তে মোট কতগুলো element আছে তা গণনা করা। চলুন নিচের উদাহরণ দিয়ে ব্যাপারটা ভালো ভাবে বুঝে নেয়া যাক:
<?php $str="My Beloved Bangladesh, I love you"; echo count(explode(" ",$str)); ?>
Output
6
একটি String এর word গুলো দিয়ে কিভাবে একটি array তৈরী করবেন?
PHP explode() এবং str_word_count() এই দুটি ফাঙ্কশন দিয়েই যেকোনো String এর word গুলো দিয়ে নতুন একটি array তৈরী করতে পারবেন। আর explode() function কাজটি delimiter এর ভিত্তিতে করে, আর str_word_count() function কাজটি করতে হলে আপনাকে এর দ্বিতীয় parameter টি 1 দিতে হবে। চলুন নিচের উদাহরণটি দেখুন :
<?php $str="My Beloved Bangladesh, I love you"; echo "<pre>"; print_r(explode(" ",$str)); // we use delimiter a white space print_r(str_word_count($str,1)); ?>
Output
Array ( [0] => My [1] => Beloved [2] => Bangladesh, [3] => I [4] => love [5] => you ) Array ( [0] => My [1] => Beloved [2] => Bangladesh [3] => I [4] => love [5] => you )
অবশ্য আপনি এই কাজটি str_getcsv() function দিয়েও করতে পারেন। নিচের উদাহরণে দেখুন:
<?php $str1="lastname-email-phone"; print_r(str_getcsv($str1,"-")); $str2="lastname,email,phone"; print_r(str_getcsv($str2,",")); ?>
Output
Array ( [0] => lastname [1] => email [2] => phone ) Array ( [0] => lastname [1] => email [2] => phone )
একটি string এর প্রত্যেকটি word, সম্পূর্ণ String এর কত নম্বর character থেকে শুরু হয়েছে তা কিভাবে জানবেন ?
একটি string এর প্রত্যেকটি word, সম্পূর্ণ String এর কত নম্বর character থেকে শুরু হয়েছে তা জানার জন্য আপনি str_word_count() function টি ব্যবহার করতে পারেন। সেক্ষেত্রে আপনাকে দ্বিতীয় parameter টি দিতে হবে 2. চলুন নিচের উদাহরণটি দেখুন :
<?php $str="My Beloved Bangladesh, I love you"; echo "<pre>"; print_r(str_word_count($str,2)); echo "</pre>"; ?>
Output
Array ( [0] => My [3] => Beloved [11] => Bangladesh [23] => I [25] => love [30] => you )
একটি String এর character গুলো দিয়ে কিভাবে একটি array তৈরী করবেন?
একটি String এর character গুলো দিয়ে array তৈরী করার জন্য আপনি str_split() function টি ব্যবহার করতে পারেন। নিচের উদাহরণ দেখুন :
<?php $str = "Hello Friend"; $arr1 = str_split($str); $arr2 = str_split($str, 3); print_r($arr1); print_r($arr2); ?>
Output
Array ( [0] => H [1] => e [2] => l [3] => l [4] => o [5] => [6] => F [7] => r [8] => i [9] => e [10] => n [11] => d ) Array ( [0] => Hel [1] => lo [2] => Fri [3] => end )
একটি array কে কিভাবে String এ রূপান্তর করবেন?
একটি array কে String এ রূপান্তর করতে হলে আপনাকে implode() function টি ব্যবহার করতে হবে। আর implode() function এর প্রথম Parameter দিতে হয় glue আর দ্বিতীয় parameter দিতে হয় একটা array . নিচের উদাহরণটি দেখুন :
<?php $array = array('lastname', 'email', 'phone'); echo implode(",", $array),"\n"; //An example of Comma seperated String echo implode(" ",$array),"\n"; // An example of white space separated String ?>
Output
lastname,email,phone lastname email phone
String এর মধ্যে একটা নির্দিষ্ট অংশ মোট কতবার আছে, তা কিভাবে বের করবেন ?
string এর মধ্যে একটা নির্দিষ্ট অংশ মোট কতবার আছে, তা বের করার জন্য আপনি substr_count() function টি ব্যবহার করতে পারেন। চলুন নিচের উদাহরণে দেখি :
<?php $text = 'This is a test'; echo strlen($text); // 14 echo substr_count($text, 'is'); // 2 // the string is reduced to 's is a test', so it prints 1 echo substr_count($text, 'is', 3); // the text is reduced to 's i', so it prints 0 echo substr_count($text, 'is', 3, 3); // generates a warning because 5+10 > 14 echo substr_count($text, 'is', 5, 10); // prints only 1, because it doesn't count overlapped substrings $text2 = 'gcdgcdgcd'; echo substr_count($text2, 'gcdgcd'); ?>
একটি বড় string কে কিভাবে ছোট ছোট line এ রূপান্তর করবেন?
একটি বড় string কে ছোট ছোট line এ রূপান্তর করতে আপনি wordwrap() অথবা chunk_split() function দুটি ব্যবহার করতে পারেন। নিচের উদাহরণে দেখুন :
<?php $text = "The quick brown fox jumped over the lazy dog."; $newtext = wordwrap($text, 20, "<br />\n"); echo $newtext; ?>
Output
The quick brown fox
jumped over the lazy
dog.
তবে আপনি যদি চতুর্থ Parameter কে true বলে দেন, তাহলে একটা সমস্যা হতে পারে , আর তা হচ্ছে যেকোনো word এর মাঝখানেও ভেঙে যেতে পারে , নিচের উদাহরণে দেখুন :
<?php $text = "A very long woooooooooooord."; $newtext = wordwrap($text, 8, "\n", true); echo "$newtext\n"; ?>
A very long wooooooo ooooord.
এবার চলুন chunk_split() function এর একটা ব্যবহার দেখি :
<?php $text = "A very long woooooooooooord."; $newtext = chunk_split($text, 8, "\n"); echo "$newtext\n"; ?>
Output
A very l ong wooo oooooooo ord.