Hướng dẫn php regex escape brackets - dấu ngoặc thoát php regex

Tôi đang cố gắng viết biểu thức sẽ chấp nhận định dạng số điện thoại sau:

508 736 756
505050505
+48 505 505 505
(+48) 505 505 505
++48 505 505 505
(++48) 505 505 505
(23)692 36 99
23 692 36 99

Tôi đã viết biểu thức sau

^(([+]{0,2}?)?([+]{0,2}?)?([0-9 ]+)?)$

Tuy nhiên, biểu thức này chỉ bao gồm các định dạng được liệt kê dưới đây:

508 736 756
505050505
+48 505 505 505
++48 505 505 505
23 692 36 99

Tôi có một vấn đề với việc thoát khỏi các ký tự dấu ngoặc đơn: (). Đó là lý do tại sao tôi không thể bao gồm các định dạng sau:

(+48) 505 505 505
(++48) 505 505 505
(23)692 36 99

Tôi đã thử thoát khỏi chúng bằng một dấu gạch chéo ngược nhưng nó sẽ không hoạt động vì một số lý do.

... [(]? [+] {0,2} [)]? ...

Bản demo: https://regex101.com/r/HY5TG4/2

(Php 4, Php 5, Php 7, Php 8)

preg_replace - thực hiện tìm kiếm biểu thức thông thường và thay thếPerform a regular expression search and replace

Sự mô tả

preg_replace (& nbsp; & nbsp; & nbsp; & nbsp; chuỗi | mảng ________ 7, & nbsp; & nbsp; & nbsp;

^(([+]{0,2}?)?([+]{0,2}?)?([0-9 ]+)?)$
0 = -1, & nbsp; & nbsp; & nbsp; & nbsp; int
^(([+]{0,2}?)?([+]{0,2}?)?([0-9 ]+)?)$
1 =
^(([+]{0,2}?)?([+]{0,2}?)?([0-9 ]+)?)$
2): chuỗi | mảng | null
(
    string|array $pattern,
    string|array $replacement,
    string|array $subject,
    int
^(([+]{0,2}?)?([+]{0,2}?)?([0-9 ]+)?)$
0 = -1
,
    int
^(([+]{0,2}?)?([+]{0,2}?)?([0-9 ]+)?)$
1 =
^(([+]{0,2}?)?([+]{0,2}?)?([0-9 ]+)?)$
2

): string|array|null

Thông số

^(([+]{0,2}?)?([+]{0,2}?)?([0-9 ]+)?)$
3

Các mẫu để tìm kiếm. Nó có thể là một chuỗi hoặc một mảng có chuỗi.

Một số sửa đổi PCRE cũng có sẵn.

^(([+]{0,2}?)?([+]{0,2}?)?([0-9 ]+)?)$
4

Chuỗi hoặc một mảng có chuỗi để thay thế. Nếu tham số này là một chuỗi và tham số

^(([+]{0,2}?)?([+]{0,2}?)?([0-9 ]+)?)$
3 là một mảng, tất cả các mẫu sẽ được thay thế bằng chuỗi đó. Nếu cả hai tham số
^(([+]{0,2}?)?([+]{0,2}?)?([0-9 ]+)?)$
3 và
^(([+]{0,2}?)?([+]{0,2}?)?([0-9 ]+)?)$
4 đều là mảng, mỗi
^(([+]{0,2}?)?([+]{0,2}?)?([0-9 ]+)?)$
3 sẽ được thay thế bằng đối tác
^(([+]{0,2}?)?([+]{0,2}?)?([0-9 ]+)?)$
4. Nếu có ít phần tử hơn trong mảng
^(([+]{0,2}?)?([+]{0,2}?)?([0-9 ]+)?)$
4 so với mảng
^(([+]{0,2}?)?([+]{0,2}?)?([0-9 ]+)?)$
3, bất kỳ
^(([+]{0,2}?)?([+]{0,2}?)?([0-9 ]+)?)$
3 nào cũng sẽ được thay thế bằng một chuỗi trống.

^(([+]{0,2}?)?([+]{0,2}?)?([0-9 ]+)?)$
4 có thể chứa các tài liệu tham khảo về mẫu
508 736 756
505050505
+48 505 505 505
++48 505 505 505
23 692 36 99
4 hoặc
508 736 756
505050505
+48 505 505 505
++48 505 505 505
23 692 36 99
5, với dạng sau là mẫu ưa thích. Mỗi tài liệu tham khảo như vậy sẽ được thay thế bằng văn bản được chụp bởi mẫu dấu ngoặc đơn. n có thể từ 0 đến 99 và
508 736 756
505050505
+48 505 505 505
++48 505 505 505
23 692 36 99
6 hoặc
508 736 756
505050505
+48 505 505 505
++48 505 505 505
23 692 36 99
7 đề cập đến văn bản phù hợp với toàn bộ mẫu. Dấu ngoặc đơn được tính từ trái sang phải (bắt đầu từ 1) để có được số lượng tiểu mẫu bị bắt. Lưu ý rằng các dấu gạch chéo ngược trong các chuỗi chữ có thể yêu cầu phải được thoát ra.n'th parenthesized pattern. n can be from 0 to 99, and
508 736 756
505050505
+48 505 505 505
++48 505 505 505
23 692 36 99
6 or
508 736 756
505050505
+48 505 505 505
++48 505 505 505
23 692 36 99
7 refers to the text matched by the whole pattern. Opening parentheses are counted from left to right (starting from 1) to obtain the number of the capturing subpattern. Note that backslashes in string literals may require to be escaped.

Khi làm việc với một mẫu thay thế trong đó một bản sao lưu ngay lập tức được theo sau bởi một số khác (tức là: đặt một số theo nghĩa đen ngay sau một mẫu phù hợp), bạn không thể sử dụng ký hiệu

508 736 756
505050505
+48 505 505 505
++48 505 505 505
23 692 36 99
8 quen thuộc cho bản sao lưu của bạn.
508 736 756
505050505
+48 505 505 505
++48 505 505 505
23 692 36 99
9, ví dụ, sẽ nhầm lẫn preg_replace () vì nó không biết liệu bạn có muốn bản sao lưu
508 736 756
505050505
+48 505 505 505
++48 505 505 505
23 692 36 99
8 theo nghĩa đen
(+48) 505 505 505
(++48) 505 505 505
(23)692 36 99
1 hay bản sao lưu
508 736 756
505050505
+48 505 505 505
++48 505 505 505
23 692 36 99
9 theo sau là không có gì. Trong trường hợp này, giải pháp là sử dụng
(+48) 505 505 505
(++48) 505 505 505
(23)692 36 99
3. Điều này tạo ra một bản sao lưu
(+48) 505 505 505
(++48) 505 505 505
(23)692 36 99
4 bị cô lập, để lại
(+48) 505 505 505
(++48) 505 505 505
(23)692 36 99
1 như một nghĩa đen.preg_replace() since it does not know whether you want the
508 736 756
505050505
+48 505 505 505
++48 505 505 505
23 692 36 99
8 backreference followed by a literal
(+48) 505 505 505
(++48) 505 505 505
(23)692 36 99
1, or the
508 736 756
505050505
+48 505 505 505
++48 505 505 505
23 692 36 99
9 backreference followed by nothing. In this case the solution is to use
(+48) 505 505 505
(++48) 505 505 505
(23)692 36 99
3. This creates an isolated
(+48) 505 505 505
(++48) 505 505 505
(23)692 36 99
4 backreference, leaving the
(+48) 505 505 505
(++48) 505 505 505
(23)692 36 99
1 as a literal.

Khi sử dụng công cụ sửa đổi

(+48) 505 505 505
(++48) 505 505 505
(23)692 36 99
6 không dùng, hàm này thoát khỏi một số ký tự (cụ thể là
(+48) 505 505 505
(++48) 505 505 505
(23)692 36 99
7,
(+48) 505 505 505
(++48) 505 505 505
(23)692 36 99
8,
(+48) 505 505 505
(++48) 505 505 505
(23)692 36 99
9 và null) trong các chuỗi thay thế các bản sao lưu. Điều này được thực hiện để đảm bảo rằng không có lỗi cú pháp nào phát sinh từ việc sử dụng bản sao lại với các trích dẫn đơn hoặc kép (ví dụ:
The bear black slow jumps over the lazy dog.
0). Hãy chắc chắn rằng bạn biết về cú pháp chuỗi của PHP để biết chính xác chuỗi được giải thích sẽ trông như thế nào.

The bear black slow jumps over the lazy dog.
1

Chuỗi hoặc một mảng có chuỗi để tìm kiếm và thay thế.

Nếu

The bear black slow jumps over the lazy dog.
1 là một mảng, thì việc tìm kiếm và thay thế được thực hiện trên mọi mục nhập của
The bear black slow jumps over the lazy dog.
1 và giá trị trả về cũng là một mảng.

Nếu mảng

The bear black slow jumps over the lazy dog.
1 là kết hợp, các khóa sẽ được bảo quản trong giá trị trả về.

The bear black slow jumps over the lazy dog.
5

Sự thay thế tối đa có thể cho mỗi mẫu trong mỗi chuỗi

The bear black slow jumps over the lazy dog.
1. Mặc định là
The bear black slow jumps over the lazy dog.
7 (không có giới hạn).

The bear black slow jumps over the lazy dog.
8

Nếu được chỉ định, biến này sẽ được lấp đầy với số lượng thay thế được thực hiện.

Trả về giá trị

preg_replace () trả về một mảng nếu tham số

The bear black slow jumps over the lazy dog.
1 là một mảng hoặc một chuỗi khác. returns an array if the
The bear black slow jumps over the lazy dog.
1 parameter is an array, or a string otherwise.

Nếu các trận đấu được tìm thấy,

The bear black slow jumps over the lazy dog.
1 mới sẽ được trả về, nếu không
The bear black slow jumps over the lazy dog.
1 sẽ được trả về không thay đổi hoặc
^(([+]{0,2}?)?([+]{0,2}?)?([0-9 ]+)?)$
2 nếu xảy ra lỗi.
^(([+]{0,2}?)?([+]{0,2}?)?([0-9 ]+)?)$
2
if an error occurred.

Errors/Exceptions

Sử dụng công cụ sửa đổi "\ e" là một lỗi; Một

The slow black bear jumps over the lazy dog.
3 được phát ra trong trường hợp này.
The slow black bear jumps over the lazy dog.
3
is emitted in this case.

Nếu mẫu regex được truyền không biên dịch cho một regex hợp lệ, một

The slow black bear jumps over the lazy dog.
3 được phát ra.
The slow black bear jumps over the lazy dog.
3
is emitted.

Ví dụ

Ví dụ số 1 sử dụng các bản sao lưu theo sau là chữ số

The slow black bear jumps over the lazy dog.
5

Ví dụ trên sẽ xuất ra:

Ví dụ #2 Sử dụng các mảng được lập chỉ mục với preg_replace ()preg_replace()

The slow black bear jumps over the lazy dog.
6

Ví dụ trên sẽ xuất ra:

The bear black slow jumps over the lazy dog.

Ví dụ #2 Sử dụng các mảng được lập chỉ mục với preg_replace ()

The slow black bear jumps over the lazy dog.
7

Ví dụ trên sẽ xuất ra:

The slow black bear jumps over the lazy dog.

Ví dụ #2 Sử dụng các mảng được lập chỉ mục với preg_replace ()

The slow black bear jumps over the lazy dog.
8

Ví dụ trên sẽ xuất ra:

Ví dụ #2 Sử dụng các mảng được lập chỉ mục với preg_replace ()

Bằng các mẫu và thay thế KSORTING, chúng ta nên có được những gì chúng ta muốn.

The slow black bear jumps over the lazy dog.
9

Ví dụ #3 thay thế một số giá trị

()1

()2

()3

Ví dụ trên sẽ xuất ra:

Ví dụ #2 Sử dụng các mảng được lập chỉ mục với preg_replace ()

Bằng các mẫu và thay thế KSORTING, chúng ta nên có được những gì chúng ta muốn.:

Ví dụ #3 thay thế một số giá trịksort() on each array prior to calling preg_replace().

Bằng các mẫu và thay thế KSORTING, chúng ta nên có được những gì chúng ta muốn.:

Ví dụ #3 thay thế một số giá trị

$pattern4

Xem thêm

  • Mẫu pcre
  • preg_quote () - Trích dẫn các ký tự biểu thức chính quy
  • preg_filter () - Thực hiện tìm kiếm biểu thức thông thường và thay thế
  • preg_match () - Thực hiện phù hợp với biểu thức thông thường
  • preg_replace_callback () - Thực hiện tìm kiếm biểu thức thông thường và thay thế bằng cách sử dụng gọi lại
  • preg_split () - Chuỗi phân chia theo biểu thức thông thường
  • preg_last_error () - Trả về mã lỗi của thực thi pcre regex cuối cùng

Arkani tại iol dot pt ¶

13 năm trước

$pattern5

$pattern6

$pattern7

$pattern8

$pattern9

tôi tại perochak dot com ¶

11 năm trước

$replacement0

$replacement1

$replacement2

$pattern9

PHP-comments-remove dot me at dotancohen dot com ¶

14 năm trước

$replacement4

$replacement5

$replacement6

$replacement7

Nik tại Rolls Dot CC ¶

9 năm trước

$replacement8

$replacement9

$pattern9

razvan_bc tại yahoo dot com ¶

8 giờ trước

$subject1

$subject2

$subject3

$subject4

sternkinder tại gmail dot com ¶

15 năm trước

$subject5

$subject6

$subject7

$subject8

$subject9

Ismith tại Nojunk Dot Motorola Dot Com ¶

15 năm trước

^(([+]{0,2}?)?([+]{0,2}?)?([0-9 ]+)?)$
00

^(([+]{0,2}?)?([+]{0,2}?)?([0-9 ]+)?)$
01

$pattern9

Ismith tại Nojunk Dot Motorola Dot Com ¶

bublifuk tại mailinator dot com

^(([+]{0,2}?)?([+]{0,2}?)?([0-9 ]+)?)$
03

4 năm trước

Thư tại Johanvanderwe Dot NL ¶

^(([+]{0,2}?)?([+]{0,2}?)?([0-9 ]+)?)$
04

^(([+]{0,2}?)?([+]{0,2}?)?([0-9 ]+)?)$
05

^(([+]{0,2}?)?([+]{0,2}?)?([0-9 ]+)?)$
06

^(([+]{0,2}?)?([+]{0,2}?)?([0-9 ]+)?)$
07

^(([+]{0,2}?)?([+]{0,2}?)?([0-9 ]+)?)$
08

^(([+]{0,2}?)?([+]{0,2}?)?([0-9 ]+)?)$
09

^(([+]{0,2}?)?([+]{0,2}?)?([0-9 ]+)?)$
10