Escape Ký Tự Phân Cách Trong PHP
Nếu một ký tự không phải là ký tự đặc biệt, thì khi bạn sử dụng nó làm ký tự phân cách, bản thân nó sẽ cần được escape bên trong biểu thức chính quy. Hãy xem xét một ví dụ.
Giả sử chúng ta sử dụng ký tự thăng (#) làm ký tự phân cách, và bên trong biểu thức chính quy, chúng ta tìm kiếm ký tự dấu và (&). Vì dấu và không phải là một ký tự đặc biệt, chúng ta không cần escape nó:
<?php
echo preg_replace('#a&b#', '!', 'a&b'); // sẽ in ra '!'
?>
Bây giờ giả sử ký tự phân cách là dấu và và bên trong biểu thức chính quy chúng ta cũng cần tìm dấu và. Trong trường hợp này, dấu và bên trong cần phải được escape, nếu không PHP sẽ báo lỗi:
<?php
echo preg_replace('&a\&b&', '!', 'a&b'); // sẽ in ra '!'
?>
Sửa lỗi được mắc phải trong đoạn mã sau:
<?php
echo preg_replace('#a#b#', '!', 'a#b');
?>