ฟังก์ชั่นการเปลี่ยนอักขระ PHP Str_replace - แทนที่สตริงการค้นหาทั้งหมดที่เกิดขึ้นด้วยสตริงการแทนที่ str_replace ด้วยอาร์เรย์: การแทนที่หลายรายการในที่เดียว

ตอนนี้เราจะดูอย่างใดอย่างหนึ่งมาก ฟังก์ชั่นที่มีประโยชน์สำหรับ คือ การแทนที่ส่วนของสตริง นี่คือฟังก์ชัน 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()