Vấn đề dấu gạch chéo ngược trong PHP
Dấu gạch chéo ngược là ký tự đặc biệt trong PHP. Điều này có nghĩa là trong chuỗi, nếu chúng ta muốn dấu gạch chéo ngược đại diện cho chính nó, chúng ta phải nhân đôi nó:
<?php
$str = '\\ \\\\ \\\\\\'; // thực tế chuỗi là '\ \\ \\\'
?>
Dấu gạch chéo ngược cũng là ký tự đặc biệt của biểu thức chính quy. Điều này có nghĩa là bên trong biểu thức chính quy, để dấu gạch chéo ngược đại diện cho chính nó, nó cần được viết tới bốn lần:
<?php
echo preg_replace('#\\\\#', '!', '\\ \\\\ \\\\\\'); // sẽ in ra '! ! !!'
?>
Bây giờ hãy viết một biểu thức chính quy, trong đó
mẫu tìm kiếm sẽ là: dấu gạch chéo ngược
một hoặc nhiều lần. Trong trường hợp đó, chúng ta
sẽ viết toán tử + cho tới 4
ký tự trước nó mà không cần nhóm:
<?php
echo preg_replace('#\\\\+#', '!', '\\ \\\\ \\\\\\'); // sẽ in ra '! ! !'
?>
Cho một chuỗi:
<?php
$str = 'a\\b c\\d e\\f';
?>
Tìm tất cả các chuỗi con trong chuỗi này theo mẫu chữ cái, dấu gạch chéo ngược, chữ cái.
Cho một chuỗi:
<?php
$str = 'a\\b c\\\\d e\\\\\\f';
?>
Tìm tất cả các chuỗi con trong chuỗi này theo mẫu chữ cái, dấu gạch chéo ngược bất kỳ số lần nào, chữ cái.