Php lấy

Để ghi nhớ các cờ, hãy cố gắng hiểu chúng là "theo thứ tự của mẫu biểu thức chính quy" (PREG_PATTERN_ORDER) hoặc "được sắp xếp theo tập hợp" (PREG_SET_ORDER)




Thay thế bằng Preg_Replace()

Đối với các thay thế thẳng (ví dụ: thay thế '10' bằng '20'), bạn không thực sự cần regex. Trong những trường hợp như vậy, str_replace có thể nhanh hơn chức năng regex preg_replace.
Array
(
    [0] => Array    // The Whole Matches
        (
            [0] => San Francisco (SFO) USA
            [1] => Sydney (SYD) Australia
            [2] => Auckland (AKL) New Zealand
        )
    [1] => Array     // The Group 1 Matches
        (
            [0] => San Francisco
            [1] => Sydney
            [2] => Auckland
        )
    [2] => Array     // The Group 2 Matches
        (
            [0] => SFO
            [1] => SYD
            [2] => AKL
        )
    [3] => Array     // The Group 3 Matches
        (
            [0] => USA
            [1] => Australia
            [2] => New Zealand
        )
)	
3

Hàm preg_replace xuất hiện khi bạn cần một mẫu biểu thức chính quy khớp với chuỗi cần thay thế, chẳng hạn nếu bạn chỉ muốn thay thế '10' khi nó đứng một mình chứ không phải khi nó là một phần "101" hoặc "Tệp10".

Theo mặc định, hàm này sẽ thay thế tất cả các kết quả khớp trong chuỗi ban đầu, vì vậy hãy đảm bảo đây là điều bạn muốn. Nếu bạn chỉ muốn thay thế 1 hoặc 5 phiên bản, hãy chỉ định giới hạn này làm đối số thứ tư.


Đây là một ví dụ.

______1


Mã này thay thế hai trường hợp "12" bằng "6". Nếu bạn chỉ muốn thay thế phiên bản đầu tiên, bạn sẽ đặt giới hạn (1) làm đối số thứ tư.

______04

Điều này sẽ xuất ra "Cho tôi 6 quả trứng rồi thêm 12 quả nữa. "

Nếu bạn muốn biết có bao nhiêu lần thay thế được thực hiện, hãy thêm một biến làm tham số thứ năm. Điều này buộc bạn phải đặt tham số thứ tư (số lần thay thế giới hạn). Để không đặt giới hạn, hãy sử dụng -1. Chẳng hạn, với

Array
(
    [0] => Array    // The Whole Matches
        (
            [0] => San Francisco (SFO) USA
            [1] => Sydney (SYD) Australia
            [2] => Auckland (AKL) New Zealand
        )
    [1] => Array     // The Group 1 Matches
        (
            [0] => San Francisco
            [1] => Sydney
            [2] => Auckland
        )
    [2] => Array     // The Group 2 Matches
        (
            [0] => SFO
            [1] => SYD
            [2] => AKL
        )
    [3] => Array     // The Group 3 Matches
        (
            [0] => USA
            [1] => Australia
            [2] => New Zealand
        )
)	
5

Giá trị của $count sẽ là 2.

Sử dụng các nhóm đã chụp trong chuỗi thay thế
Trong chuỗi thay thế, bạn có thể tham khảo các nhóm chụp. Nhóm 1 là \1 hoặc $1, Nhóm 2 là \2 và $2, v.v. Điều này có nghĩa là chuỗi thay thế "\2###\1" sẽ thay thế văn bản phù hợp bằng nội dung của Nhóm 2, theo sau là ba giá trị băm và nội dung của Nhóm 1.

Kỹ thuật này thường được sử dụng khi bạn muốn sắp xếp lại thứ tự của một chuỗi. Bạn có thể ghép cả một chuỗi lớn chứa đầy lông tơ không mong muốn, ghi lại những phần bạn quan tâm và sắp xếp lại chúng theo cách bạn muốn.


Lưu ý rằng khi nó thực hiện thay thế này đến thay thế khác, công cụ regex tiếp tục hoạt động trên chuỗi ban đầu—thay vì chuyển sang phiên bản mới nhất của chuỗi.

Ví dụ: sử dụng chuỗi abcde, hãy sử dụng biểu thức chính quy
Array
(
    [0] => Array    // The Whole Matches
        (
            [0] => San Francisco (SFO) USA
            [1] => Sydney (SYD) Australia
            [2] => Auckland (AKL) New Zealand
        )
    [1] => Array     // The Group 1 Matches
        (
            [0] => San Francisco
            [1] => Sydney
            [2] => Auckland
        )
    [2] => Array     // The Group 2 Matches
        (
            [0] => SFO
            [1] => SYD
            [2] => AKL
        )
    [3] => Array     // The Group 3 Matches
        (
            [0] => USA
            [1] => Australia
            [2] => New Zealand
        )
)	
6, khớp với một ký tự Word đứng trước a.

______07

Điều này tạo ra aacde. chỉ có chữ "b" được thay thế, bởi vì trong chuỗi gốc, nó là ký tự duy nhất đứng trước chữ "a". Mặt khác, nếu công cụ regex chuyển sang phiên bản mới nhất của chuỗi sau khi thực hiện mỗi lần thay thế, khi nói đến "c", ký tự đó cũng sẽ được bắt đầu bằng "a" và chúng tôi sẽ kết thúc bằng aaaaaa.

Thay thế dấu phân cách vô hình
Đây là thủ thuật mà những người yêu thích regex chắc chắn sẽ thích. Nó liên quan chặt chẽ đến kỹ thuật Chia tách bằng Dấu phân cách vô hình, vì vậy tôi sẽ giải thích nó trong phần đó.


Thay thế phức tạp với Preg_Replace_Callback()

Thật thú vị khi preg_replace cho phép bạn thao tác với chuỗi thay thế bằng cách tham khảo các nhóm đã chụp. Nhưng hãy đối mặt với nó, thường thì bạn muốn thực hiện một số phép thay thế phức tạp hơn nhiều trên văn bản mà bạn khớp. Đây là lúc preg_replace_callback đến giải cứu.

Thay vì chỉ định một sự thay thế theo nghĩa đen (hoặc một sự thay thế bao gồm các nhóm theo nghĩa đen và chụp), preg_replace_callback cho phép bạn chỉ định một hàm thay thế. Hàm đó thực hiện phép thuật của nó trên mẫu phù hợp và trả về giá trị thay thế, preg_replace_callback sau đó sẽ cắm vào vị trí trong chuỗi gốc.

Ví dụ: giả sử bạn có một chuỗi mà bạn cần chuyển chữ cái cuối cùng của mỗi từ thành chữ hoa. Đầu tiên chúng ta sẽ xem xét cú pháp cơ bản, sau đó chúng ta sẽ thấy một "cú pháp nội tuyến" tiết kiệm hơn. Trong cả hai trường hợp, chúng tôi sẽ sử dụng biểu thức chính quy này.

______08


Mẫu này chỉ đơn giản khớp với từng từ riêng biệt (nhờ có \b ranh giới từ). Khi làm như vậy, nó ghi lại tất cả các chữ cái của một từ ngoại trừ từ cuối cùng vào Nhóm 1 và nó ghi lại chữ cái cuối cùng vào Nhóm 2. (Đối với nhiệm vụ này, chúng tôi giả sử rằng mỗi từ có ít nhất hai chữ cái, vì vậy chúng tôi ổn. )

Đây là cách cơ bản để thực hiện việc thay thế.

______7


Trong ví dụ trên, bạn có thể thấy cách preg_replace_callback chỉ định tên của hàm tạo chuỗi thay thế. "LastToUpper". Chức năng LastToUpper sau đó được xác định. Chúng tôi biết rằng preg_replace_callback gửi một tham số đến hàm thay thế, vì vậy chúng tôi chỉ định nó và gọi nó—tùy ý—$m.

$m mà preg_replace_callback gửi đến hàm thay thế này là mảng so khớp hiện tại, có cùng dạng với mảng so khớp của preg_match. Điều này có nghĩa là $m[0] là đối sánh tổng thể, trong khi $m[1] là Nhóm 1, $m[2] là Nhóm 2, v.v. Điều này giúp LastToUpper dễ dàng trả lại từ có chữ cái cuối cùng được viết hoa. đó là Tổ 1 (các chữ cái đầu) ghép với phiên bản viết hoa của Tổ 2 (chữ cuối).

Ở đây chúng tôi đã làm một số việc đơn giản, nhưng bạn có thể đánh giá cao việc thay thế của chúng tôi bằng logic hơn sẽ dễ dàng như thế nào. Ví dụ, giả sử chúng ta muốn viết hoa chữ cái cuối cùng của mỗi từ, nhưng khi chữ cái đó là chữ "s", chúng ta muốn thay thế bằng chữ "Z". Dễ dàng thực hiện. chúng ta chỉ ghi logic đó vào chức năng gọi lại.

______8


Phiên bản nhẹ hơn. Sử dụng hàm ẩn danh
Thông thường, chúng tôi không sử dụng hàm thay thế ngoại trừ biểu thức chính quy cụ thể mà chúng tôi đang làm việc. Phương thức thứ hai cũng giống như vậy, ngoại trừ thay vì chuyển tên hàm trong đối số thứ hai, chúng tôi xác định hàm "inline" trong lệnh gọi preg_replace_callback.

______9


Như bạn có thể thấy, chức năng gọi lại của chúng tôi không có tên. đó là một chức năng ẩn danh, vì vậy chúng tôi không làm ô nhiễm không gian tên.

Với điều này, bạn được trang bị để thực hiện một số thay thế mạnh mẽ.


Chia tách bằng Preg_Split()

Có thể bạn đã quen thuộc với hàm phát nổ(), hàm này lấy một số văn bản có các phần tử được phân tách bằng một chuỗi (chẳng hạn như dấu phẩy hoặc dấu ba sao. ***) và tách văn bản dọc theo dấu phân cách, chia nhỏ các phần tử thành một mảng.

Ví dụ, đoạn mã sau sẽ in ra một mảng có "break", "my" và "string".

______10


Chà, preg_split là phiên bản "người lớn" của phát nổ(). Nó cũng sẽ tách một chuỗi, nhưng nó sẽ cho phép bạn sử dụng các dấu phân cách biến đổi, giúp dễ dàng trích xuất các đoạn văn bản thú vị với phần thừa không mong muốn (nhưng có thể xác định được) ở giữa.

Ví dụ: giả sử rằng lần này, dấu phân cách (hoặc phần không mong muốn) là một nhận xét kiểu C (với khoảng trắng tùy chọn ở bên cạnh), chẳng hạn như "/* Phần này vô dụng với chúng tôi */". Với mục đích của ví dụ này, chúng tôi giả sử rằng chúng tôi biết rằng các dấu phân cách là các nhận xét kiểu C đơn lẻ, nghĩa là không có nhận xét lồng nhau (đó là một bài tập khác liên quan đến khớp dấu ngoặc đơn cân bằng).

Đừng lo. Sau đây sẽ xuất ra "tốt hơn", "regex", "hôm nay".

______11


Giống như preg_replace, preg_split có một tham số tùy chọn (ở vị trí thứ ba) cho phép bạn đặt giới hạn về số phần tử mà bạn muốn thêm vào mảng. Ngoài ra còn có một số cờ mà bạn có thể đọc trên trang thủ công preg_split.

Và bây giờ, đây là cách nhìn nhận những thứ chắc chắn sẽ thu hút sự quan tâm của những người yêu thích thuật toán trong số các bạn.

Thông thường, bạn có thể sử dụng preg_split thay vì preg_match_all. Theo một cách nào đó, cả hai trận đấu trở lại. Trong khi preg_match_all chỉ định những gì bạn muốn, thì preg_split chỉ định những gì bạn muốn xóa. (Hoặc, như chúng ta sẽ thấy bên dưới, những gì chúng ta muốn phân biệt. )

Làm cách nào để kiểm tra Preg_match trong PHP?

PHP. hàm preg_match() . Thông thường việc tìm kiếm bắt đầu từ đầu chuỗi chủ đề. Tham số tùy chọn offset được sử dụng để xác định vị trí bắt đầu tìm kiếm từ đâu. This function searches string for pattern, returns true if pattern exists, otherwise returns false. Usually search starts from beginning of subject string. The optional parameter offset is used to specify the position from where to start the search.

Làm cách nào để khớp một chuỗi trong PHP?

Hàm strcmp() so sánh hai chuỗi . Ghi chú. Hàm strcmp() an toàn nhị phân và phân biệt chữ hoa chữ thường. Gợi ý. Hàm này tương tự như hàm strncmp(), với sự khác biệt là bạn có thể chỉ định số lượng ký tự từ mỗi chuỗi sẽ được sử dụng để so sánh với hàm strncmp().

Làm cách nào để kiểm tra regex trong PHP?

Trong PHP, bạn có thể sử dụng hàm preg_match() để kiểm tra xem một biểu thức chính quy có khớp với một chuỗi cụ thể hay không . Lưu ý rằng hàm này dừng sau lần khớp đầu tiên, vì vậy, hàm này phù hợp nhất để kiểm tra biểu thức chính quy hơn là trích xuất dữ liệu.

Làm cách nào để tạo Preg_match trong PHP?