0Pricing
PHP Academy · บทเรียน

การแทนที่ข้อความด้วย preg_replace

แทนที่ส่วนที่ตรงกันด้วยสตริงทดแทนและการอ้างอิงย้อนกลับ

การแทนที่ข้อความด้วย preg_replace เป็นบทเรียน PHP Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน PHP Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส PHP Academy มีบทเรียนทั้งหมด 4 บทเรียน

ลายเซ็นของ preg_replace()

preg_replace($pattern, $replacement, $subject) คืนค่าสตริงต้นฉบับที่แทนที่การจับคู่ทั้งหมดแล้ว ส่งอาร์เรย์ของสตริงต้นฉบับเพื่อประมวลผลหลายสตริงพร้อมกัน

การแทนที่แบบง่าย

แทนที่ตัวเลขทั้งหมดในสตริงด้วยเครื่องหมายดอกจัน

<?php
$result = preg_replace('/\d/', '*', 'Order #12345');
echo $result; // "Order #*****"

การอ้างอิงย้อนกลับในการแทนที่

ใช้ $1, $2... (หรือ \1, \2) เพื่อแทรกกลุ่มจับคู่ลงในสตริงที่จะใช้แทนที่

<?php
$result = preg_replace('/^(\w+)\s(\w+)$/', '$2, $1', 'John Smith');
echo $result; // "Smith, John"

การอ้างอิงย้อนกลับแบบตั้งชื่อ

กลุ่มจับคู่แบบตั้งชื่อสามารถอ้างอิงเป็น ${name} ในสตริงที่จะใช้แทนที่

<?php
$result = preg_replace(
    '/(?P<year>\d{4})-(?P<month>\d{2})-(?P<day>\d{2})/',
    '${day}/${month}/${year}',
    '2025-06-15'
);
echo $result; // "15/06/2025"

การแทนที่หลายรูปแบบ

ส่งอาร์เรย์ของรูปแบบและค่าที่ใช้แทนที่เพื่อประมวลผลกฎหลายข้อพร้อมกัน

<?php
$result = preg_replace(
    ['/foo/', '/bar/'],
    ['baz',   'qux'],
    'foo and bar'
);
echo $result; // "baz and qux"

พารามิเตอร์ขีดจำกัด

พารามิเตอร์ตัวที่ 4 จำกัดจำนวนครั้งที่จะแทนที่ ส่งค่า -1 เพื่อไม่จำกัดจำนวน (ค่าเริ่มต้น)

<?php
$result = preg_replace('/a/', 'X', 'banana', 2);
echo $result; // "bXnXna"

พารามิเตอร์จำนวน

ส่งตัวแปรตัวที่ 5 เพื่อรับจำนวนครั้งที่แทนที่

<?php
$count  = 0;
$result = preg_replace('/e/', '3', 'hello everyone', -1, $count);
echo "$count replacements"; // "3 replacements"

preg_replace_callback()

เมื่อมีกฎการแทนที่ที่ซับซ้อน ให้ใช้ preg_replace_callback() เพื่อประมวลผลการจับคู่แต่ละรายการด้วยคลอสเชอร์

<?php
$result = preg_replace_callback(
    '/\d+/',
    fn($m) => $m[0] * 2,
    'Item: 5, Qty: 3'
);
echo $result; // "Item: 10, Qty: 6"

ตัวอย่างการลบแท็ก HTML

ลบแท็ก HTML ทั้งหมดด้วยนิพจน์ทั่วไปแบบง่าย (ในระบบจริงให้ใช้ strip_tags())

<?php
$clean = preg_replace('/<[^>]+>/', '', '<b>Hello</b> World');
echo $clean; // "Hello World"

การสร้างสลักจากสตริง

แปลงชื่อเรื่องให้เป็นสลักที่ปลอดภัยสำหรับ URL

<?php
function slugify(string $s): string {
    $s = strtolower($s);
    $s = preg_replace('/[^a-z0-9]+/', '-', $s);
    return trim($s, '-');
}
echo slugify('Hello World!'); // "hello-world"

หมายเหตุด้านประสิทธิภาพ

ทำรูปแบบให้เรียบง่ายและหลีกเลี่ยงการย้อนกลับแบบร้ายแรง ใช้ preg_replace_callback สำหรับการแปลงที่ซับซ้อน แทนการเรียกใช้ preg_replace หลายครั้งซ้อนกัน

ความแตกต่างจาก str_replace

str_replace ทำงานเร็วกว่าเมื่อแทนที่ข้อความธรรมดา ใช้ preg_replace เฉพาะเมื่อต้องการความสามารถของรูปแบบนิพจน์ทั่วไป

สรุป

preg_replace แทนที่การจับคู่ทั้งหมดของรูปแบบ ใช้การอ้างอิงย้อนกลับ ($1) เพื่อใช้กลุ่มจับคู่ซ้ำ และใช้ preg_replace_callback เมื่อกฎการแทนที่เปลี่ยนแปลงตามเงื่อนไข

ตรวจสอบอย่างรวดเร็ว

คุณอ้างอิงกลุ่มจับคู่แรกในสตริงที่จะใช้แทนที่ของ preg_replace อย่างไร

คำถามที่พบบ่อย

บทเรียน “การแทนที่ข้อความด้วย preg_replace” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การแทนที่ข้อความด้วย preg_replace” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส PHP Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส PHP Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การแทนที่ข้อความด้วย preg_replace”

แทนที่ส่วนที่ตรงกันด้วยสตริงทดแทนและการอ้างอิงย้อนกลับ คุณปฏิบัติ PHP Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน PHP Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน PHP Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน

บทเรียน “การแทนที่ข้อความด้วย preg_replace” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน PHP Academy นี้ได้ไหม

ได้ บทเรียน PHP Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. พื้นฐานไวยากรณ์ Regex
  2. การจับคู่ด้วย preg_match
  3. การแทนที่ข้อความด้วย preg_replace
  4. การแยกและรูปแบบที่ใช้ได้จริง
← กลับไปที่ PHP Academy