String

17 December 2016

String คือประเภทข้อมูลประเภทข้อความหรือการนำตัวอักษรหลายๆ ตัวมาต่อกันหรือเรียกว่าอาเรย์ของตัวอักษร โดยความยาวของ String นั้นสามารถเปลี่ยนแปลงได้ตามค่าที่กำหนดให้กับตัวแปร ในภาษา PHP ค่าที่เป็นไปได้ของ String นั้นรองรับเกือบทุกตัวอักษรในโลก เช่น UTF-8

ในทุกภาษาของการเขียนโปรแกรมสมัยใหม่ จะมีคลาส String และมีฟังก์ชันในการจัดการ String ที่ช่วยอำนวยความสะดวกมากมาย แน่นอนในภาษา PHP นั้นได้มีฟังก์ชันที่จำเป็นในการทำงานกับ String เกือบจะทั้งหมด ในบทนี้คุณจะได้เรียนรู้เกี่ยวกับ String อย่างละเอียด

การประกาศตัวแปร String

ในบทก่อนหน้าเราได้แนะนำให้คุณรู้จักกับ String ไปบ้างแล้ว เราจะมาดูการประกาศตัวแปร String ในภาษา PHP อีกครั้ง

$str1 = "This is string declaration with double quote.";
$str2 = 'This is string declaration with single quote.';

การประกาศตัวแปร String นั้นคุณสามารถทำได้สองแบบโดยการล้อมรอบข้อความด้วยเครื่องหมาย Double quote " หรือ Single quote ' ซึ่งทั้งสองแบบนี้จะให้ผลลัพธ์ที่แตกต่างกัน

การประกาศ String โดยการใช้เครื่องหมาย Double quote เหมือนในตัวแปร $str1 ทำให้สามารถแทรกตัวอักษรพิเศษหรือตัวแปรลงใน String ได้ ในขณะที่การประกาศแบบ Single quote ในตัวแปร $str2 นั้นจะได้ผลลัพธ์ของ String เหมือนที่แบบที่ได้ประกาศไว้ในตัวแปรเท่านั้น

<?php

$name = "John";
$double_quote = "My name is $name\n";
$single_quote = 'My name is $name\n';

echo $double_quote;
echo $single_quote;

?>

นี่เป็นตัวอย่างที่จะให้เห็นความแตกต่างของการประกาศ String ทั้งสองแบบ ซึ่งจะได้ผลลัพธ์ดังข้างล่าง

My name is John
My name is $name\n

ในผลลัพธ์ของโปรแกรม คุณจะเห็นว่าในตัวแปร $double_quote เราสามารถแทรกตัวแปร $name ลงไปภายใน String ได้ ซึ่งเรียกว่า String interpolation และ \n หมายถึงการขึ้นบรรทัดใหม่ ในขณะที่ในตัวแปร $single_quote จะได้ผลลัพธ์ตามที่เรากำหนดให้กับ String

String concatenation

String concatenation คือการต่อ String โดยการนำ String ตั้งแต่หนึ่งหรือหลายตัวมาต่อกันและจะได้ผลลัพธ์เป็น String ใหม่ ในภาษา PHP เราใช้เครื่องหมาย dot . ในการต่อ String เข้าด้วยกัน

<?php

$str1= "This is ". "marcuscode.com\n";
$str2 = "You " . "are ". " learning PHP\n";

$first_name = "Samuel";
$last_name = "Mu";
$full_name = $first_name . " " . $last_name;

echo $str1;
echo $str2;
echo $full_name ;

?>

ในตัวอย่างเราได้นำ String มาต่อกันโดยใช้เครื่องหมาย . ซึ่งเป็นดำเนินการต่อ String นอกจากนี้ เรายังสามารถต่อ String กับข้อมูลประเภท Value type ได้ เช่น Boolean Integer หรือ Float ซึ่งข้อมูลเหล่านี้เมื่อถูกใช้กับตัวกำเนินการต่อ String จะถูกแปลงเป็น String อัตโนมัติโดย PHP

<?php

$month = "November";
$day = 8;
$year = 2016;

$date = $month . " " . $day . ", " . $year;

echo var_dump($day);
echo var_dump($month);
echo var_dump($year);
echo var_dump($date);

?>

นี่เป็นตัวอย่างในการต่อ String กับข้อมูลแบบตัวเลขซึ่งจะให้ผลลัพธ์สุดท้ายเป็น String ดังผลการทำงานข้างล่าง

int(8)
string(8) "November"
int(2016)
string(16) "November 8, 2016"

String interpolation

String interpolation คือการสอดแทรกตัวแปรลงไปใน String ที่มีการประกาศโดยการใช้เครื่องหมาย Double quote " โดยการทำงานจะเกิดจากการค้นหาตัวแปรภายใน String และทำการแทนที่ตัวแปรนั้นด้วยค่าในตัวแปร และทำให้เกิด String ใหม่ มันสามารถใช้เป็นวิธีในการเชื่อมต่อ String ได้เช่นเดียวกัน

<?php

$amount = 10;
$fruit = "apple";
$container = "bag";
$sentence = "I have $amount $fruit(s) in a $container.\n";
echo $sentence;

$a = 4;
$b = 6;
$sum = $a + $b;
echo "$a + $b = $sum\n";

$name = "Marcus";
echo "Hey{$name}WhatsUp?";

?>

ในตัวอย่างเป็นการประกาศตัวแปรที่มีการทำ String interpolation ซึ่งสามารถใช้แทนการเชื่อมต่อ String ได้ ในตัวแปร $sentence เราสร้างประโยคด้วยการนำข้อมูลในตัวแปรมาสร้างเป็น String ใหม่ ในตัวแปร $sum เป็นการแสดงค่าผลรวมของตัวเลขทั้งสอง

$name = "Marcus";
echo "Hey{$name}WhatsUp?";

สำหรับคำสั่งสุดท้ายเราจะใช้เครื่องหมายวงเล็บ {} ในการล้อมรอบตัวแปร ในกรณีที่ข้อความรอบตัวแปรนั้นไม่เป็นช่องว่าง

I have 10 apple(s) in a bag.
4 + 6 = 10
HeyMarcusWhatsUp?

และนี่ผลลัพธ์ของโปรแกรมสำหรับ String interpolation ในภาษา PHP

Charterers of string

String นั้นเกิดจากการต่อกันของตัวอักษรหลายๆ ตัวอักษร ดังนั้นมันจึงเป็นอาเรย์ของ Character โดยเราสามารถเข้าถึงตัวอักษรใดๆ ภายใน String ผ่านทาง Index ได้โดยเครื่องหมาย []

<?php

$str = "Mountain";
echo "$str\n";
echo var_dump($str);

$str = "Mountain";
$str[0] = "m";
echo "$str\n";

$str[1] = "a";
$str[2] = "i";
echo "$str\n";

$str[0] = "";
echo "$str\n";
echo var_dump($str);

?>

ในตัวอย่างเป็นการเข้าถึงข้อมูลภายใน String โดย Index ซึ่งตำแหน่งแรกจะเริ่มจาก 0 เราเปลี่ยนตัวแปร "m" เป็นตัวพิมพ์ใหญ่ ต่อมาเราเข้าถึงตำแหน่งที่สองและตำแหน่งที่สามของ String และเราเปลี่ยนเป็น "a" และ "i" ตามลำดับ

ในคำสั่งสุดท้าย $str[0] = ""; เราทำการเปลี่ยนค่าให้กับ String เป็นค่าว่างซึ่งมันจะไม่ลบ String ออกและความยามของ String ยังคงเท่าเดิม

Mountain
string(8) "Mountain"
mountain
maintain
 aintain
string(8) " aintain"

นี่เป็นผลลัพธ์ของโปรแกรม

String functions

ในภาษา PHP ได้มีฟังก์ชันในการทำงานเกี่ยวกับ String มากมายสำหรับใช้ในการจัดการ String เพื่อนำไปใช้ในวัตถุประสงค์ที่แตกต่างกัน เราจะแนะนำให้รู้จักกับฟังก์ชันที่สำคัญและใช้บ่อยๆ

<?php

$str = "Mountain";
echo $str . "\n";

echo strlen($str) . "\n"; // get the length
echo strtolower($str) . "\n"; // to lower case
echo strtoupper($str) . "\n"; // to upper case
echo strrev($str) . "\n"; // reverse string order
echo str_shuffle($str) . "\n"; // suffer string order
echo strpos($str, "tain") . "\n"; // find position of string
echo substr($str, 0, 3) . "\n"; // sub string
echo str_replace("ou", "ia", $str) . "\n"; // replace in string

?>

นี่เป็นตัวอย่างการใช้งานฟังก์ชันต่างๆ กับ String เรามี String ที่มีการกำหนดค่าเป็น "Mountain" เราใช้ฟังก์ชัน strlen() ในการหาความยาวของ String ฟังก์ชัน strtolower() สำหรับแปลง String ให้เป็นตัวพิมพ์เล็ก และฟังก์ชัน strtoupper() จะเป็นตัวพิมพ์ใหญ่

ฟังก์ชัน strrev() สำหรับกลับลำดับตัวอักษรภายใน String และฟังก์ชัน str_shuffle() สุ่มลำดับของตัวอักษรใหม่ ฟังก์ชัน strpos() ในการหาตำแหน่งแรกที่พบคำใน String

ส่วนฟังก์ชัน substr() เป็นการตัดคำใน String ในตัวอย่างเป็นตัดจากตำแหน่งแรก (Index 0) ไปอีก 3 ตัวอักษร และฟังก์ชัน str_replace() เป็นการแทนที่คำใน String ด้วยคำใหม่

Mountain
8
mountain
MOUNTAIN
niatnuoM
ntMaoniu
4
Mou
Miantain

นี่เป็นผลลัพธ์ของโปรแกรม

ต่อไปจะเป็นการใช้ฟังก์ชันของ String ในการจัดการกับกลุ่มคำหรือประโยค

<?php

$str = "Everest is the highest mountain in the world.";

$count = str_word_count($str);
echo "$count words in the string.\n";

$words = explode(" ", $str);
print_r($words);

$new_str = implode("+", $words);
echo $new_str;

?>

ในตัวอย่างเรามีตัวแปร $str ซึ่งได้เก็บค่าของ String ในรูปแบบประโยค เราใช้ฟังก์ชัน str_word_count() นับจำนวนคำใน String โดยคำที่นับนั้นจะแบ่งแยกตามช่องว่างหรือสัญลักษณ์พิเศษบางตัวที่อยู่ใน String

$words = explode(" ", $str);

ฟังก์ชัน explode ใช้ในการแยกคำจาก String และได้ผลลัพธ์มาเป็นอาเรย์ของ String โดยพารามิเตอร์ตัวแรกเป็นตัวที่จะใช้แบ่ง String ในตัวอย่างเป็นช่องว่าง

$new_str = implode("+", $words);

ฟังก์ชัน implode() ใช้สำหรับรวม String เข้าด้วยกันโดยคั่นด้วยตัวแบ่งที่ใส่เป็นพารามิเตอร์ตัวเลขของฟังก์ชัน

8 words in the string.
Array
(
    [0] => Everest
    [1] => is
    [2] => the
    [3] => highest
    [4] => mountain
    [5] => in
    [6] => the
    [7] => world.
)
Everest+is+the+highest+mountain+in+the+world.

นี่เป็นผลลัพธ์ของโปรแกรม จากการใช้ 3 ฟังก์ชันตามดังกล่าว

ต่อไปมาดูตัวอย่างของการใช้ฟังก์ชันในการจัดรูปแบบ String เพิ่มเติม คือการใช้ฟังก์ชันตัดและเติมคำลงไปใน String

<?php

// Triming string
$str = "####Music####";
echo trim($str, "#") . "\n";
echo ltrim($str, "#") . "\n";
echo rtrim($str, "#") . "\n";

// padding number
echo str_pad("PHP", 10, "*") . "\n";
echo str_pad("PHP", 10, "*", STR_PAD_LEFT) . "\n";
echo str_pad("PHP", 10, "*", STR_PAD_RIGHT) . "\n";

?>

ในตัวอย่างเรามีตัวแปร $str ซึ่งมีค่าเป็น "####Music####" เราใช้ฟังก์ชัน trim() ในการตัด # ทั้งสองข้างออกจาก String ฟังก์ชัน ltrim() สำหรับตัดเฉพาะทางด้านซ้าย และฟังก์ชัน rtrim() สำหรับตัดเฉพาะทางด้านขวา

ต่อมาเป็นการเติมคำลงไปใน String โดยการใช้ฟังก์ชัน str_pad() ในตัวอย่างเราเติมตัวอักษร "*" และอากิวเมนต์ตัวที่สอง 10 เป็นจำนวนของตัวอักษรทั้งหมดที่ต้องการซึ่งจะนับรวมกัน String เดิมด้วย และอากิวเมนต์ตัวที่สามเป็นประเภทของการเติม เช่น ทั้งสองข้าง ทางซ้าย หรือทางขวา

Music
Music####
####Music
PHP*******
*******PHP
PHP*******

นี่เป็นผลลัพธ์ของโปรแกรม

ในบทนี้ คุณได้เรียนรู้พื้นฐานของการทำงานกับ String ในภาษา PHP การประกาศตัวแปร การใช้งานฟังก์ชันในการจัดการ String

บทความนี้เป็นประโยชน์หรือไม่?Yes·No