ตอนนี้เราจะดูอย่างใดอย่างหนึ่งมาก ฟังก์ชั่นที่มีประโยชน์สำหรับ คือ การแทนที่ส่วนของสตริง นี่คือฟังก์ชัน str_replace ซึ่งคล้ายกับวิธีการใน โปรแกรมแก้ไขข้อความ"แทนที่". อ่านวิธีใช้งาน ตัวอย่างและเคล็ดลับด้านล่าง
ตัวเลือกการโทร
str_replace มีพารามิเตอร์สามตัว ซึ่งทั้งหมดจำเป็น
Str_replace(ค้นหา แทนที่ originalString)
- การค้นหาคือสิ่งที่คุณต้องการค้นหา ซึ่งอาจเป็นสตริงหรืออาร์เรย์
- แทนที่ - องค์ประกอบที่พบทั้งหมดที่คุณระบุในการค้นหาสำหรับการค้นหาจะถูกแทนที่ด้วยค่านี้ นี่อาจเป็นสตริงหรืออาร์เรย์ก็ได้
- originalString - สตริงดั้งเดิมที่จะดำเนินการค้นหา ฟังก์ชั่นไม่เปลี่ยนสตริงอินพุต!
อันที่จริงแล้ว ทุกอย่างเรียบง่ายเช่นเดียวกับบทเรียนก่อนหน้านี้ทั้งหมด ลองดูโค้ดตัวอย่างแล้วทุกอย่างจะเข้าที่ทันที
ตัวอย่างการใช้ str_replace
ดังนั้นเราจึงมีสตริงอินพุต "มีส้มเขียวหวาน X กิโลกรัมอยู่บนชั้นวาง" แทนที่จะเป็น "X" เราต้องการแทนที่ตัวเลขที่ต้องการ หากต้องการทำสิ่งนี้ คุณสามารถใช้การเล่นซ้ำได้ดังนี้:
//กรอกสตริงที่เราจะใช้เป็นเทมเพลต $rawstring = "มีส้มเขียวหวานอยู่บนชั้นวาง X กิโลกรัม"; //แทนที่ $str_1 = str_replace("X", "10", $rawstring); //สามารถแทนที่ด้วยค่าอื่น $str_2 = str_replace("X", "135473", $rawstring); สะท้อน "ครั้งแรก:" $str_1 . -
"; echo "ครั้งที่สอง: ". $str_2;
เราได้รับสิ่งต่อไปนี้:
ครั้งแรก: มีส้มเขียวหวาน 10 กิโลกรัมอยู่บนชั้นวาง ครั้งที่สอง: บนชั้นวางมีส้มเขียวหวาน 135,473 กิโลกรัม
แน่นอนว่าตัวอย่างนั้นไม่ใช่ตัวอย่างที่ดีที่สุด ฉันคิดอย่างอื่นไม่ออก แต่มันเข้าใจประเด็นใช่ไหม ฉันหวังว่าทุกอย่างชัดเจนถ้าไม่ถามในความคิดเห็น
str_replace ด้วยอาร์เรย์: การแทนที่หลายรายการในที่เดียว
ในตัวอย่าง เราใช้การเล่นซ้ำเพื่อแทนที่คำว่า "X" หนึ่งคำด้วยสตริงของเรา (ตัวเลขหรืออะไรก็ตาม) แต่จะเป็นอย่างไรหากเราต้องการแทนที่หลายคำ? คุณสามารถลองใช้ฟังก์ชันหลาย ๆ ครั้งหรือสร้างอาร์เรย์ของคำที่เราจะแทนที่รวมถึงอาร์เรย์ที่สองที่มีค่าที่เราจะแทนที่ด้วยเพื่อให้ได้ผลลัพธ์ในการเรียกครั้งเดียวไปที่ การทำงาน.
ลองขยายตัวอย่างเดียวกัน แต่แทนที่อย่างอื่น
//String - template $rawstring = "บน Z มี X กิโลกรัมของ Y ที่เลือก"; //array สิ่งที่เราจะแทนที่ $placeholders = array("Z", "X", "Y"); //อาร์เรย์ สิ่งที่เราจะแทนที่ด้วย $vals_1 = array("shelf", "5", "oranges"); //ก็หรือนี่ $vals_2 = array("table", "189", "pears"); //แทนที่หนึ่งครั้ง $str_1 = str_replace($placeholders, $vals_1, $rawstring); //แทนที่สองตัว $str_2 = str_replace($placeholders, $vals_2, $rawstring); สะท้อน "หนึ่ง:" $str_1 . -
"; echo "สอง: ". $str_2;
ตามสิ่งที่เราได้รับ
( PHP 4, PHP 5, PHP 7)
str_replace — แทนที่สตริงการค้นหาที่เกิดขึ้นทั้งหมดด้วยสตริงการแทนที่
คำอธิบาย
ฟังก์ชันนี้ส่งคืนสตริงหรืออาร์เรย์ที่มีการค้นหาทั้งหมดในหัวเรื่องที่แทนที่ด้วยแทนที่
หากไม่จำเป็นต้องใช้กฎการค้นหา/แทนที่ที่ซับซ้อน (เช่น นิพจน์ทั่วไป) การใช้ฟังก์ชันนี้จะดีกว่า preg_แทนที่().
รายการพารามิเตอร์
หากการค้นหาและแทนที่เป็นอาร์เรย์แสดงว่า str_แทนที่()ใช้แต่ละค่าจากอาร์เรย์ที่เกี่ยวข้องเพื่อค้นหาและแทนที่ใน subject หากอาร์เรย์แทนที่มีองค์ประกอบน้อยกว่า search สตริงว่างจะถูกนำมาใช้เป็นสตริงแทนที่สำหรับค่าที่เหลือ
หากการค้นหาเป็นอาร์เรย์และการแทนที่เป็นสตริง สตริงการแทนที่นั้นจะถูกใช้สำหรับแต่ละองค์ประกอบของอาร์เรย์การค้นหา กรณีกลับไม่สมเหตุสมผล
หากการค้นหาหรือการแทนที่เป็นอาร์เรย์ องค์ประกอบจะถูกประมวลผลตั้งแต่รายการแรกไปรายการสุดท้าย ค่าการค้นหาหรือที่เรียกว่าเข็ม
(เข็ม). คุณสามารถใช้อาร์เรย์สำหรับค่าการค้นหาหลายค่า
แทนที่
ค่าการแทนที่จะถูกนำมาใช้เพื่อแทนที่ค่าการค้นหา คุณสามารถใช้อาร์เรย์สำหรับหลายค่าได้
เรื่อง สตริงหรืออาร์เรย์ที่ใช้ค้นหาและแทนที่หรือที่เรียกว่ากองหญ้า
(กองหญ้า).
หากหัวเรื่องเป็นอาร์เรย์ การค้นหาและแทนที่จะดำเนินการในแต่ละองค์ประกอบหัวเรื่อง และผลลัพธ์ของฟังก์ชันก็จะเป็นอาร์เรย์ด้วย
หากผ่าน ระบบจะกำหนดจำนวนการเปลี่ยนทดแทน
ส่งกลับค่า
ฟังก์ชันนี้ส่งคืนสตริงหรืออาร์เรย์ที่มีค่าแทนที่
ตัวอย่าง str_แทนที่()
ตัวอย่าง #1 ตัวอย่างการใช้งาน
//มอบหมาย
$bodytag = str_replace ("%body%" , "สีดำ" , "
// กำหนด: Hll Wrld f PHP
$สระ = array("a" , "e" , "i" , "o" , "u" , "A" , "E" , "ฉัน" , "O" , "U" );
$onlyconsonants = str_replace($vowels, "", "Hello World of PHP");
// มอบหมาย: คุณควรกินพิซซ่า เบียร์ และไอศกรีมทุกวัน $วลี =;
$healthy = array("ผลไม้" , "ผัก" , "ไฟเบอร์" );
$yummy = array("พิซซ่า" , "เบียร์" , "ไอศกรีม" );
$newphrase = str_replace($ดีต่อสุขภาพ, $อร่อย, $วลี);
// มอบหมาย: 2
$str = str_replace ("ll" , "" , "โชคดีนะมอลลี่!" , $count );
สะท้อน $ นับ;
?>
ตัวอย่างที่ 2 ตัวอย่างเคล็ดลับที่เป็นไปได้ด้วย str_แทนที่()
//สั่งเปลี่ยน
$str = "บรรทัดที่ 1\nบรรทัดที่ 2\rบรรทัดที่ 3\r\nบรรทัดที่ 4\n";
$order = array("\r\n" , "\n" , "\r" );
$แทนที่ = "
"
;
// ประมวลผล \r\n ก่อนเพื่อหลีกเลี่ยงการแทนที่อีกครั้ง
echo $newstr = str_replace ($สั่งซื้อ, $แทนที่, $str);
// พิมพ์ F เพราะว่า A ถูกแทนที่ด้วย B จากนั้น B ด้วย C และอื่นๆ...
// เป็นผลให้ E จะถูกแทนที่ด้วย F เนื่องจากการแทนที่จะเกิดขึ้นจากซ้ายไปขวา
$search = array("A" , "B" , "C" , "D" , "E" );
$แทนที่ = array("B" , "C" , "D" , "E" , "F" );
$เรื่อง = "ก" ;
echo str_replace ($ค้นหา, $แทนที่, $เรื่อง);
// ผลลัพธ์: applerootrootnut (ด้วยเหตุผลข้างต้น)
$letters = array("ฉัน" , "เกี่ยวกับ" );
$fruit = array("แอปเปิ้ล" , "ถั่ว" );
$text = "ฉันเกี่ยวกับ" ;
$output = str_replace($ตัวอักษร, $ผลไม้, $ข้อความ);
สะท้อน $ เอาท์พุท;
?>
หมายเหตุ
ความคิดเห็น: ฟังก์ชันนี้มีความปลอดภัยในการประมวลผลข้อมูลในรูปแบบไบนารี
คำเตือน
หมายเหตุเกี่ยวกับขั้นตอนการเปลี่ยน
เพราะ str_แทนที่()ทำการแทนที่จากซ้ายไปขวา จากนั้นเมื่อใช้การแทนที่หลายรายการ ก็สามารถแทนที่ค่าที่แทรกไว้ก่อนหน้านี้ด้วยค่าอื่นได้
ความคิดเห็น:
ดูตัวอย่างในหน้านี้ด้วย ฟังก์ชันนี้จะคำนึงถึงขนาดตัวพิมพ์ ใช้ str_ireplace()
( PHP 4, PHP 5, PHP 7)
str_replace — แทนที่สตริงการค้นหาที่เกิดขึ้นทั้งหมดด้วยสตริงการแทนที่
คำอธิบาย
ฟังก์ชันนี้ส่งคืนสตริงหรืออาร์เรย์ที่มีการค้นหาทั้งหมดในหัวเรื่องที่แทนที่ด้วยแทนที่
หากไม่จำเป็นต้องใช้กฎการค้นหา/แทนที่ที่ซับซ้อน (เช่น นิพจน์ทั่วไป) การใช้ฟังก์ชันนี้จะดีกว่า สำหรับการทดแทนที่ไม่คำนึงถึงขนาดตัวพิมพ์ .
รายการพารามิเตอร์
หากการค้นหาและแทนที่เป็นอาร์เรย์แสดงว่า str_แทนที่()ใช้แต่ละค่าจากอาร์เรย์ที่เกี่ยวข้องเพื่อค้นหาและแทนที่ใน subject หากอาร์เรย์แทนที่มีองค์ประกอบน้อยกว่า search สตริงว่างจะถูกนำมาใช้เป็นสตริงแทนที่สำหรับค่าที่เหลือ
หากการค้นหาเป็นอาร์เรย์และการแทนที่เป็นสตริง สตริงการแทนที่นั้นจะถูกใช้สำหรับแต่ละองค์ประกอบของอาร์เรย์การค้นหา กรณีกลับไม่สมเหตุสมผล
หากการค้นหาหรือการแทนที่เป็นอาร์เรย์ องค์ประกอบจะถูกประมวลผลตั้งแต่รายการแรกไปรายการสุดท้าย ค่าการค้นหาหรือที่เรียกว่าเข็ม
(เข็ม). คุณสามารถใช้อาร์เรย์สำหรับค่าการค้นหาหลายค่า
แทนที่
ค่าการแทนที่จะถูกนำมาใช้เพื่อแทนที่ค่าการค้นหา คุณสามารถใช้อาร์เรย์สำหรับหลายค่าได้
เรื่อง สตริงหรืออาร์เรย์ที่ใช้ค้นหาและแทนที่หรือที่เรียกว่ากองหญ้า
(กองหญ้า).
หากหัวเรื่องเป็นอาร์เรย์ การค้นหาและแทนที่จะดำเนินการในแต่ละองค์ประกอบหัวเรื่อง และผลลัพธ์ของฟังก์ชันก็จะเป็นอาร์เรย์ด้วย
หากผ่าน ระบบจะกำหนดจำนวนการเปลี่ยนทดแทน
ส่งกลับค่า
ฟังก์ชันนี้ส่งคืนสตริงหรืออาร์เรย์ที่มีค่าแทนที่
ตัวอย่าง str_แทนที่()
ตัวอย่าง #1 ตัวอย่างการใช้งาน
//มอบหมาย
$bodytag = str_replace ("%body%" , "สีดำ" , "
// กำหนด: Hll Wrld f PHP
$สระ = array("a" , "e" , "i" , "o" , "u" , "A" , "E" , "ฉัน" , "O" , "U" );
$onlyconsonants = str_replace($vowels, "", "Hello World of PHP");
// มอบหมาย: คุณควรกินพิซซ่า เบียร์ และไอศกรีมทุกวัน $วลี =;
$healthy = array("ผลไม้" , "ผัก" , "ไฟเบอร์" );
$yummy = array("พิซซ่า" , "เบียร์" , "ไอศกรีม" );
$newphrase = str_replace($ดีต่อสุขภาพ, $อร่อย, $วลี);
// มอบหมาย: 2
$str = str_replace ("ll" , "" , "โชคดีนะมอลลี่!" , $count );
สะท้อน $ นับ;
?>
ตัวอย่างที่ 2 ตัวอย่างเคล็ดลับที่เป็นไปได้ด้วย str_แทนที่()
//สั่งเปลี่ยน
$str = "บรรทัดที่ 1\nบรรทัดที่ 2\rบรรทัดที่ 3\r\nบรรทัดที่ 4\n";
$order = array("\r\n" , "\n" , "\r" );
$แทนที่ = "
"
;
// ประมวลผล \r\n ก่อนเพื่อหลีกเลี่ยงการแทนที่อีกครั้ง
echo $newstr = str_replace ($สั่งซื้อ, $แทนที่, $str);
// พิมพ์ F เพราะว่า A ถูกแทนที่ด้วย B จากนั้น B ด้วย C และอื่นๆ...
// เป็นผลให้ E จะถูกแทนที่ด้วย F เนื่องจากการแทนที่จะเกิดขึ้นจากซ้ายไปขวา
$search = array("A" , "B" , "C" , "D" , "E" );
$แทนที่ = array("B" , "C" , "D" , "E" , "F" );
$เรื่อง = "ก" ;
echo str_replace ($ค้นหา, $แทนที่, $เรื่อง);
// ผลลัพธ์: applerootrootnut (ด้วยเหตุผลข้างต้น)
$letters = array("ฉัน" , "เกี่ยวกับ" );
$fruit = array("แอปเปิ้ล" , "ถั่ว" );
$text = "ฉันเกี่ยวกับ" ;
$output = str_replace($ตัวอักษร, $ผลไม้, $ข้อความ);
สะท้อน $ เอาท์พุท;
?>
หมายเหตุ
ความคิดเห็น: preg_แทนที่()
คำเตือน
หมายเหตุเกี่ยวกับขั้นตอนการเปลี่ยน
เพราะ str_แทนที่()ทำการแทนที่จากซ้ายไปขวา จากนั้นเมื่อใช้การแทนที่หลายรายการ ก็สามารถแทนที่ค่าที่แทรกไว้ก่อนหน้านี้ด้วยค่าอื่นได้
ความคิดเห็น:
ดูตัวอย่างในหน้านี้ด้วย ฟังก์ชันนี้มีความปลอดภัยในการประมวลผลข้อมูลในรูปแบบไบนารี str_ireplace()