PHP தமிழில் பகுதி 13: Working with Strings and Text in PHP

PHP என்ற நிரல் மொழி உருவாக்கப்பட்டதன் முக்கிய நோக்கமே web contentகளை திறம்பட கையாள்வதற்குத்தான். web content என்பது உரைகளை (text) அடிப்படையாகக் கொண்டது. ஆகையால் உரைகளைத் திறம்பட, எளிமையாக கையாள்வதற்காக பலதரப்பட்ட வசதிகளை (features) PHP கொண்டிருப்பதில் ஆச்சர்யப்படுவதற்கு ஒன்றுமில்லை.

உரைகளைக் கையாள்வதற்காக PHP வழங்கியுள்ள பலதரப்பட்ட நுட்பங்களை இந்தப் பகுதியில் நாம் விரிவாக பார்க்க இருக்கிறோம். Web developer ஆக பணிபுரியும் ஒருவருக்கு உரைகளைக் கையாள்வதில் நிறைய வேலைகள் இருக்கும். அவற்றில் எழுத்துக்களை மாற்றுதல், உரையினுடைய ஒரு பகுதியை வேறொரு பகுதியைக் கொண்டு நிரப்புதல், உரைகளில் தேடுதல் ஆகியவைகள். இதையும் தாண்டி இன்னும் நிறைய வேலைகள் உரைகளைக் கையாள்வதில் இருக்கிறது. அதற்கான வழிகளையும் PHP ஏற்படுத்தி தருகிறது.

எழுத்துக்களை மாற்றுதல் (Changing the Case of a PHP String)

சரத்தில்(string) இருக்கக்கூடிய எழுத்துக்களில் மாற்றங்களை் செய்தவதற்காக நிறைய செயல்கூறுகளை (function) PHP நமக்கு வழங்குகிறது. இந்த செயல்கூறுகள் மாற்றம் செய்யப்பட வேண்டிய சரத்தினை (string) உள்ளீடாகப் பெற்றுக் கொண்டு, மாற்றங்கள் செய்யப்பட்ட புதிய சரத்தினை நமக்கு வெளியீடாக தருகிறது. இதில் கவனிக்க வேண்டிய செய்தி என்னவென்றால் இதற்காகப் பயன்படுத்தப்படும் செயல்கூறுகள் அனைத்தும் nondestructive (சிதைவவுறா), அதாவது உள்ளீடாகப் பெறும் அசல் சரத்தில் (Original String) எந்தவித மாற்றத்தையும் செய்யாது. மாற்றம் செய்யப்பட்ட சரத்தினை ஒரு புதிய மாறியில் (variable) சேமித்து வைத்துக் கொண்டு தேவையான இடங்களில் பயன்படுத்திக் கொள்ளலாம்.

கீழே உள்ள நிரலைப் பாருங்கள்

<?php

$myName = ‘KATHIRVEL R’;

$myOS = ‘GNU/Linux’;

$myNameInSmall = strtolower($myName);

$myOsInUpper = strtoupper($myOS);

echo “My Name is $myNameInSmall.<br>”;

echo “I am using $myOsInUpper Operating System for past 5-years.<br>”;

?>

வெளியீடு

image3362

மாற்றம் செய்யப்பட்ட சரம் (string) அசல் சரத்திலேயே சேமிக்க வேண்டுமென்றால். மாற்றத்தை புதிதாக ஒரு மாறியில் சேமிக்காமல் அசல் மாறியிலேயே சேமித்துவிட வேண்டியதுதான்.

<?php

$myName = ‘KATHIRVEL R’;

$myOS = ‘GNU/Linux’;

$myName = strtolower($myName);

$myOS = strtoupper($myOS);

echo “My Name is $myName.<br>”;

echo “I am using $myOS Operating System for past 5-years.<br>”;

?>

எழுத்துகளில் மாற்றங்களை ஏற்படுத்துவதற்காக PHP வழங்கியுள்ள செயல்கூறுகளும், அதன் செயல்களும் கீழே பட்டியலிடப்பட்டுள்ளது.

Strtolower() – முழு சரத்தினையும் சிற்றெழுத்தாக(lower case) மாற்றி தருகிறது.

Strtoupper() – முழு சரத்தினையும் பேரெழுத்தாக(upper case) மாற்றி தருகிறது.

Ucfirst() – வாக்கியத்தில் உள்ள முதல் எழுத்தை மட்டும் பேரெழுத்தாக மாற்றி தருகிறது.

Ucwords() – ஒவ்வொரு வார்த்தையிலும் இருக்கும் முதல் எழுத்தை மட்டும் பேரெழுத்தாக மாற்றி தருகிறது.

ASCII மதிப்புக்கு மாற்றுதல் மற்றும் ASCII மதிப்புகளிலிருந்து மாற்றுதல்

ASCII (American Standard Code for Information Interchange) மதிப்புகளுடன் வேலை செய்வதற்கான வசதியையும் PHP நமக்கு வழங்கியிருக்கிறது. மொத்தம் 127 ASCII எழுத்துக்கள் உள்ளன (சிறப்புக் குறியீடுகளும் இதில் அடக்கம்).

ASCII யிலிருந்து மற்றும் ASCII க்கு மாற்றுவதற்காக இரண்டு செயல்கூறுகளை PHP வழங்கியுள்ளது. அவைகள்

ord() – ஒரு character -ஐ உள்ளீடாக பெற்றுக் கொண்டு அதற்குச் சமமான ASCII code ஐ வெளியீடாக தருகின்றது.

Chr() – ஓர் ASCII character – ஐ உள்ளீடாக பெற்றுக் கொண்டு அதற்குச் சமமான charater -ஐ வெளியீடாக தருக்கிறது.

<?php

$smallCase = ‘abcdefghijklmnopqrstuvwxyz’;

$upperCase = strtoupper($smallCase);

echo “<b>Character – ASCII Code</b><br>”;

for ( $i=0 ; $i<strlen($smallCase) ; $i++ ) {

echo “$smallCase[$i] = ” . ord($smallCase[$i]);

echo ” || “;

echo “$upperCase[$i] = ” . ord($upperCase[$i]) . “<br>”;

}

?>

வெளியீடு

image3373

ASCII to Character

<?php

echo “<b>ASCII Codes</b><br>”;

for ( $i = 33 ; $i < 127 ; $i++ ) {

echo “$i = “.chr($i).”<br>”;

}

?>

வெளியீடு

image3384

வடிவுறு சரங்களை அச்சிடுதல் (Printing Formatted Strings)

fprintf() function வடிவுறு(formatted) சரங்களை அச்சிட பயன்படுகிறது. இரண்டு அல்லது அதற்கு மேற்பட்ட உள்ளீடுகளைப் எடுத்துக் கொள்கிறது. கீழ்காணும் வடிவத்தில் இருக்கும்.

fprintf(“String”, variable1, variable2);

வடிவுறு செய்யப்பட்ட சரத்தை string கொடுக்கும், formatting specifiers இருக்கும் இடத்தில் அதற்கேற்றாற்போல் variableகளின் மதிப்பு அளிக்கப்படும்.

printf Formatting Specifiers

formatting specifiers ‘%’ குறியீட்டுடன் ஆரம்பமாகும். அதனைத் தொடர்ந்து எந்த வகையான மதிப்புகள் அச்சிடப்பட வேண்டுமோ அதற்கான specifier இருக்கும். உதாரணமாக ஒரு decimal number ஐ அச்சிட வேண்டுமென்றால் அந்த இடத்தில் %d என இருக்கும்.

கீழ்காணும் அட்டவைணையில் specifier அதற்கான விளக்கங்களும் கொடுக்கப்பட்டுள்ளது.

Specifier Description
%% சதவீத குறியீட்டை அச்சிடுகிறது.
%b இரும எண்ணை அச்சிடுகிறது.
$c ASCII மதிப்புக்குறிய character – ஐ அச்சிடுகிறது.
%d முழு எண்ணை அச்சிடுகிறது.
%e Scientific notation (ex. 1.2e+5)
%u Unsigned decimal number
%f Floating point number
%F Floating point number
%o Octal number
%s String
%x Hexadecimal number
%X Hexadecimal number

கீழே உள்ள நிரலைப் பாருங்கள்

<?php

$myName = ‘KATHIRVEL’;

$myAge = 25;

$myLang = ‘Tamil’;

$myHeight = 177.08;

printf(“My name is %s. I am %d years old. my language is %s and my height is %f cms”,$myName,$myAge,$myLang,$myHeight);

?>

வெளியீடு

image3395

சரத்தின் நீளத்தை கண்டுபிடித்தல் (Finding the Length of a String)

ஒரு சரத்தின் நீளத்தைக் கண்டுபிடிக்க strlen() function பயன்படுகிறது. Strlen() function ஒரு சரத்தினை உள்ளீடாகப் பெற்றுக் கொண்டு அதனுடைய நீளத்தை வெளியீடாக தருகிறது.

<?php

$myName = ‘KATHIRVEL’;

echo “My Name Contains ” . strlen($myName) . ” letters.”;

?>

image3406

சரத்தை Arrayயாக மாற்றுதல் (Converting a String into a Array)

explode() function ஒரு சரத்தை array மாற்றுகிறது. Explode() function மூன்று உள்ளீடுகளை எடுத்துக் கொள்கிறது.  Delimeter – எதை வைத்து array -யாக பிரிக்க வேண்டும் என்பதைக் குறிக்கிறது. உதாரணமாக, space or comman வைத்து பிரிப்பது. String – array யாக மாற்றப்பட வேண்டி சரம் (string). divisions(விருப்பத்துக்குரியது) – அதிகபட்சம் எத்தனை உறுப்புகளாக சரத்தை பிரிக்க வேண்டும் என்பதைக் குறிக்கிறது.

<?php

$foss = “Free Open Source Software”;

$fossArray = explode(” “, $foss);

foreach ($fossArray as $i) {

echo $i;

echo “<br>”;

}

?>

image3417

<?php

$timeNow = “07:10:55”;

$timeArray = explode(“:”, $timeNow);

echo $timeArray[0] . ” Hours, ” . $timeArray[1] . ” minutes, ” . $timeArray[1] . “Seconds”;

?>

image3428

சரத்தின் முன்னும் பின்னும் இருக்கக்கூடிய whitespaceஐ நீக்குதல் (Removing Leading and Trailing Whitespace from a String)

ஒரு சரத்தின் முன்னும், பின்னும் இருக்கக்கூடிய வெற்றிடத்தை நீக்குவதற்கு trim() function பயன்படுகிறது. வெற்றிடமானது tab, space, newline, carriage return, NULL and vertical tab என எதுவாக வேண்டுமானாலும் இருக்கலாம். trim() function ஆனது string ஐ உள்ளீடாகப் பெற்று whitespace -ஐ நீக்கி அதனை வெளியீடாக தருகிறது.

<?php

$myName = ”   KATHIRVEL     “;

echo “Before apply the trim() function<br>”;

echo “$myName -“.strlen($myName).”<br>”;

echo “After apply the trim() function<br>”;

echo trim($myName).” – ” . strlen(trim($myName));

?>

வெளியீடு

image3439

சரங்களை ஒப்பிடுதல் (Comparing Strings)

web developing இல் இரண்டு சரங்களை ஒப்பிட்டுப் பார்ப்பது என்பது அடிக்கடி நடைபெறக்கூடிய ஒன்று. சரங்களை ஒப்பிடுவதற்காக பல்வேறு வகையான செயல்கூறுகளை(functions) PHP வழங்கியிருக்கிறது. அவைகளின் பட்டியல் விளக்கங்களுடன் கீழே கொடுக்கப்படுள்ளது.

Strcmp() – இரண்டு சரங்களை உள்ளீடாகப் பெற்று case-sensitive ஒப்பிடுதலைச் செய்கிறது. பொருந்துவதைப் பொருத்து மதிப்புகளைத் திருப்பித் தருகிறது.

Strcasecmp() – இரண்டு சரங்களை உள்ளீடாகப் பெற்று case-insensitive ஒப்பிடுதலைச் செய்கிறது மற்றும் பொருந்துவதைப் பொறுத்து மதிப்புகளைத் திருப்பித் தருகிறது.

Strncmp() – மூன்று சரங்களை உள்ளீடாக ஏற்றுக்கொண்டு, அதில் இரண்டு ஒப்பிடுவதற்கான சரங்கள், மற்றொன்று எத்தனை character களை ஒப்பிட வேண்டும் என்ற எண்ணிக்கை. case-sensitive ஒப்பிடுதலைச் செய்து, ஒப்பிடுதலைப் பொறுத்த மதிப்புகளைத் திருப்பித் தருகிறது.

Strncasecmp() – மூன்று சரங்களை உள்ளீடாக ஏற்றுக்கொண்டு, அதில் இரண்டு ஒப்பிடுவதற்கான சரங்கள், மற்றொன்று எத்தனை character களை ஒப்பிட வேண்டும் என்ற எண்ணிக்கை. case-insensitive ஒப்பிடுதலைச் செய்து, ஒப்பிடுதலைப் பொறுத்து மதிப்புகளைத் திருப்பித் தருகிறது.

சரங்களை ஒப்பீடு செய்தலும் மதிப்புகளை திரும்ப பெறுதலும் (String Comparison Functions Return Value)

ASCII அடிப்படையிலான ஒப்பீடுகளையே சர ஒப்பீடு செயல்கூறுகள் (string comparison functions) மேற்கொள்கிறது. ஒவ்வொரு character -ஐயும் ASCII அடிப்படையிலேயே ஒப்பிடுகிறது. ஒப்பிடக்கூடிய இரண்டு strings களும் ASCII அடிப்படையில் பொருந்தினால் 0 எனும் மதிப்பை திருப்பி அளிக்கிறது. முதல் சரத்தின் ASCII மதிப்பு , இரண்டாவது சரத்தின் ASCII மதிப்பை விட குறைவாக இருந்தால் negative number -ஐ திருப்பி அளிக்கிறது. அதிகமாக இருந்தால் positive number – ஐ திருப்பி அளிக்கிறது.

<?php

$string1 = ‘A’;

$string2 = ‘K’;

echo “ASCII($string1) = “.ord($string1);

echo “<br>”;

echo “ASCII($string2) = “.ord($string2);

echo “<br>”;

echo strcmp($string1, $string2);

?>

image3450

சரத்தை அணுகுதல் மற்றும் மாற்றுதல் (Accessing and Modifying Characters in String)

ஒரு சரத்தில் உள்ள ஒரு குறிப்பிட்ட உருவை அதனுடைய இருப்பநிலையைக் கொண்டு அணுக மற்றும் மாற்ற முடியும். இதை செய்வதற்கு string variable – ஐத் தொடர்ந்து { } க்குள் தேவையான உருவின் இருப்புநிலையைக் கொடுக்க வேண்டும். இருப்பு நிலை 0 – விலிருந்தே ஆரம்பிக்கும் என்பதை மனதில் வைத்துக்கொள்ளவும். 1 – லிருந்து ஆரம்பிக்காது.

<?php

$myName = ‘KATHIRVEL’;

$myNewName = $myName{6}.$myName{7}.$myName{8};

echo $myNewName;

echo “<br>”;

$myName{6} = 0;

$myName{7} = 0;

$myName{8} = 7;

echo $myName;

?>

வெளியீடு

image3461

சரத்திற்குள் உருவை தேடுதலும் , பகுதிச்சரமாக பிரித்தலும் (Searching for Characters and Substrings in a String)

சரத்திற்குள் ஒரு குறிப்பிட்ட உருவைத் தேடும் வசதியை PHP நமக்கு வழங்கியிருக்கிறது. இதை substring என்று சொல்லுவோம். இதைச் செய்வதற்கு strpos() மற்றும் strrpos() ஆகிய செயல்கூறுகள் பயன்படுகிறது.

Strpos() செயல்கூறு மூன்று உள்ளீடுகளைப் பெற்றுக் கொள்கிறது. அதில் இரண்டு கட்டாயமானதாகவும், ஒன்று விருப்பத்துக்கு உரியதாகவும் இருக்கிறது. நாம் எந்த சரத்திற்குள் தேடுதலைச் செய்ய வேண்டுமோ அந்த சரத்தை முதல் உள்ளீட்டிலும், தேடவேண்டிய சரத்தை இரண்டாவது உள்ளீட்டிலும் கொடுக்க வேண்டும். தேடுதலை சரத்தினுடைய எந்த நிலையிலிருந்து தொடங்க வேண்டும் என்பதை மூன்றாவது உள்ளீட்டிலும் கொடுக்க நாம் விரும்பினால் கொடுக்கலாம்.

தேடுதல் பொருந்தினால் எந்த நிலையில் பொருந்தியதோ அந்த நிலையையும், பொருந்தாவிட்டால் 0 எனும் பூலியன் மதிப்பையும் திரும்பத்தரும். முதல் இருப்புநிலையிலேயே பொருந்தி விட்டால் 0(Numeric) என்பதை வெளியீடாகத் தரும், பொருந்தாவிட்டால் பூலியன் 0 வைத் (Boolean 0) திரும்பத் தரும் இரண்டும் ஒன்றல்ல. இந்த பிரச்சைனையை சரி செய்ய நாம் === (Identically equal) மற்றும் !== (Identically not equal) வினைக்குறிகளைப் பயன்படுத்திக் கொள்ளலாம். Operator எனும் தலைப்பில் இந்த வினைக்குறிகளைப் பற்றி பார்த்திருக்கிறோம். ஞாபகம் வருகிறதா?

நிரல்

<?php

$myName = “KATHIRVEL”;

$searchStr = “V”;

if ( strpos($myName,$searchStr) !== false ) {

echo “‘$searchStr’ match at ” . strpos($myName, $searchStr) . ” position in ( $myName )”;

}

else {

echo “Match Not Found”;

}

?>

வெளியீடு

image3472

Extrcting and Replacing Substrings

substr() மற்றும் substr_replace() செயல்கூறுகளைப் பயன்படுத்தி சரத்தினுடை உருக்களைப் பிரித்து எடுக்கலாம், அல்லது மாற்றி அமைக்கலாம்.

substr() செயல்கூறு இரண்டு உள்ளீடுகளைப் பெறுகிறது. ஒன்று ஆதாரச் சரம்(source string), மற்றொன்று எந்த சுட்டியிலிருந்து சரத்தை பிரிக்க வேண்டும் என்பது. நீங்கள் விரும்பினால் எவ்வளவு நீளத்துக்கு பிரிக்க வேண்டும் என்பதைக் கொடுக்துக் கொள்ளலாம்.

நிரல்

<?php

$foos = “Free Open Source Software”;

$fossSub = substr($foos, 5, 11);

echo $fossSub;

?>

வெளியீடு

image3483

substr_replace() function நான்கு உள்ளீடுகளைப் பெற்றுக் கொள்கிறது. முதலாவது மூலச்சரம், இரண்டவது மாற்ற வேண்டியச் சரம், மூன்றாவதாக மூலச்சரத்தில் எந்த நிலையிலிருந்து மாற்ற வேண்டும் என்ற விபரம், நான்காவதாக எவ்வளவு நீளத்துக்கு மூலச்சரத்தை எடுத்துவிட்டு மாற்ற வேண்டும் என்பது.

<?php

$foos = “Free Open Source Software”;

$fossSub = substr($foos, 5, 11);

echo $fossSub;

echo “<br>”;

echo “<b>Substring Replace</b>”;

$fossRep = “Libre”;

echo “<br>”;

echo substr_replace($foos,$fossRep,0,4);

?>

வெளியீடு

image3494

Replacing All Instances of a Word in a String

சரத்தில் இருக்கும் வார்த்தையை முழுமையாக Replace செய்தல். இந்த வேலையைச் செய்ய str_replace() function பயன்படுகிறது. மூன்று கட்டாய உள்ளீடுகளையும், ஒரு விருப்ப உள்ளீடையும் எடுத்துக் கொள்கிறது. முதல் உள்ளீட்டில் மாற்றப்பட வேண்டிய சரத்தையும், இரண்டாவது உள்ளீட்டில் புதிதாக மாற்ற வேண்டிய சரத்தையும், மூன்றாவது உள்ளீட்டில் மூலச்சரத்தையும் கொடுக்க வேண்டும்.

<?php

$foss = “Free Open Source Software”;

$fossSub = substr($foss, 5, 11);

echo $fossSub;

echo “<br>”;

echo “<b>Substring Replace</b>”;

$fossRep = “Libre”;

echo “<br>”;

echo substr_replace($foss,$fossRep,0,4);

echo “<br>”;

echo “<b>String Replace</b>”;

$fossRep = “Libre”;

echo “<br>”;

echo str_replace(“Software”, $fossRep, $foss);

?>

image3505

%d bloggers like this: