Hướng dẫn preg_match not working properly in php - Preg_match không hoạt động bình thường trong php

Vì khung cuối cùng của bạn là sử dụng nhãn hiệu lười biếng với ký tự đại diện, nó sẽ không phù hợp gì ngoại trừ các quy tắc khác yêu cầu nó. Không có quy tắc nào khác để chỉ định kết thúc của trận đấu tổng thể, vì vậy phần cuối sami chỉ đơn giản được bỏ qua bởi biểu thức thông thường của bạn. Bạn có thể kiểm tra điều này:

<?php

$data="Date:29-05-2016 11:36 - Mo:919530489323 - pdd:9339 - lpm:78JIOP - pas:sami";
preg_match('#Date:(.*?) (.*?) - Mo:91(.*?) - pdd:(.*?) - lpm:(.*?) - pas:(.*?)#',$data,$matches);

var_dump($matches);

Đầu ra này:

array(7) {
  [0]=>
  string(70) "Date:29-05-2016 11:36 - Mo:919530489323 - pdd:9339 - lpm:78JIOP - pas:"
  [1]=>
  string(10) "29-05-2016"
  [2]=>
  string(5) "11:36"
  [3]=>
  string(10) "9530489323"
  [4]=>
  string(4) "9339"
  [5]=>
  string(6) "78JIOP"
  [6]=>
  string(0) ""
}

Lưu ý giá trị chuỗi khớp tổng thể ($matches[0]) thực sự dừng ở mức cuối cùng. Đó là lý do tại sao bạn có một chuỗi trống trong $matches[6].

Chaiing biểu thức chính quy sẽ khắc phục vấn đề:

<?php

$data="Date:29-05-2016 11:36 - Mo:919530489323 - pdd:9339 - lpm:78JIOP - pas:sami";
preg_match('#^Date:(.*?) (.*?) - Mo:91(.*?) - pdd:(.*?) - lpm:(.*?) - pas:(.*?)$#',$data,$matches);         

var_dump($matches);

Lưu ý ^

array(7) {
  [0]=>
  string(70) "Date:29-05-2016 11:36 - Mo:919530489323 - pdd:9339 - lpm:78JIOP - pas:"
  [1]=>
  string(10) "29-05-2016"
  [2]=>
  string(5) "11:36"
  [3]=>
  string(10) "9530489323"
  [4]=>
  string(4) "9339"
  [5]=>
  string(6) "78JIOP"
  [6]=>
  string(0) ""
}
0 tôi đã thêm. Chúng sẽ khớp với "sự khởi đầu của chuỗi" và "phần cuối của chuỗi". Vì vậy, chuỗi từ : cuối cùng đến cuối toàn bộ chuỗi đầu vào sẽ được bao gồm. Đầu ra này:

array(7) {
  [0]=>
  string(74) "Date:29-05-2016 11:36 - Mo:919530489323 - pdd:9339 - lpm:78JIOP - pas:sami"
  [1]=>
  string(10) "29-05-2016"
  [2]=>
  string(5) "11:36"
  [3]=>
  string(10) "9530489323"
  [4]=>
  string(4) "9339"
  [5]=>
  string(6) "78JIOP"
  [6]=>
  string(4) "sami"
}

Phương thức preg_match dường như không hoạt động bình thường sau khi cài đặt an toàn.

Tôi đã tạo ra một regex để chia URL Spotify và truy xuất ID. Đây là mã của tôi đang hoạt động khi tôi xóa chức năng sử dụng của Safe:

public function getTrackIdFromUrl(string $url): ?string
    {
        $spotifyRegex = "/https?:\/\/(?:embed\.|open\.)(?:spotify\.com\/)(?:track\/|\?uri=spotify:track:)((\w|-){22})/";
        preg_match($spotifyRegex, $url, $matches);
        return $matches[1] ?? null;
    }

Đối với URL

array(7) {
  [0]=>
  string(70) "Date:29-05-2016 11:36 - Mo:919530489323 - pdd:9339 - lpm:78JIOP - pas:"
  [1]=>
  string(10) "29-05-2016"
  [2]=>
  string(5) "11:36"
  [3]=>
  string(10) "9530489323"
  [4]=>
  string(4) "9339"
  [5]=>
  string(6) "78JIOP"
  [6]=>
  string(0) ""
}
2, việc trả về $ khớp [1] phải là
array(7) {
  [0]=>
  string(70) "Date:29-05-2016 11:36 - Mo:919530489323 - pdd:9339 - lpm:78JIOP - pas:"
  [1]=>
  string(10) "29-05-2016"
  [2]=>
  string(5) "11:36"
  [3]=>
  string(10) "9530489323"
  [4]=>
  string(4) "9339"
  [5]=>
  string(6) "78JIOP"
  [6]=>
  string(0) ""
}
3. Với an toàn, $ khớp trở lại null.
With Safe, $matches returns null.

  • Hướng dẫn preg_match not working properly in php - Preg_match không hoạt động bình thường trong php
    Latararalnewbie
    Newbie
  • Hướng dẫn preg_match not working properly in php - Preg_match không hoạt động bình thường trong php

  • Hướng dẫn preg_match not working properly in php - Preg_match không hoạt động bình thường trong php

  • Bài viết: 4Threads: 1Joined: Apr 2015Rputation: 0 4
    Threads: 1
    Joined: Apr 2015

    Reputation: 0

04-30-2015, 06:
(This post was last modified: 04-30-2015, 04:12 PM by latearrival. Edit Reason: corrected PHP code (was showing wrong regex) )


chào các cậu

Tôi đã dành hàng giờ cho vấn đề preg_match này và tôi đã googled ar $ e của mình và tôi vẫn hoàn toàn bối rối. Tôi hy vọng ai đó thông minh hơn tôi (không nên khó) có thể cho tôi biết những gì có thể xảy ra ...

Hướng dẫn preg_match not working properly in php - Preg_match không hoạt động bình thường trong php
) can tell me what might be going on...

Tôi có một trường biểu mẫu mà tôi đang xác thực với một cuộc gọi lại. Trong chức năng gọi lại, tôi đang sử dụng preg_match để đảm bảo trường chỉ chứa các ký tự chữ và số, không gian, dấu gạch nối, gạch dưới và ampersand. & nbsp; Vấn đề của tôi là xác nhận ampersand và

'Foo & Bar' là hợp lệ (tuyệt vời!). 'Foo & Bar' là hợp lệ (tuyệt vời!) 'Foo & b' là hợp lệ (tuyệt vời!) 'Foo & ba' không hợp lệ (tại sao ?!) '
'Foo& Bar' is valid (great!)
'Foo&B' is valid (great!)
'Foo&Ba' is invalid (why?!)
'Foo&Bar' is invalid (why?!)

Đây là mã của tôi:

Mã PHP:

array(7) {
  [0]=>
  string(70) "Date:29-05-2016 11:36 - Mo:919530489323 - pdd:9339 - lpm:78JIOP - pas:"
  [1]=>
  string(10) "29-05-2016"
  [2]=>
  string(5) "11:36"
  [3]=>
  string(10) "9530489323"
  [4]=>
  string(4) "9339"
  [5]=>
  string(6) "78JIOP"
  [6]=>
  string(0) ""
}
4

array(7) {
  [0]=>
  string(70) "Date:29-05-2016 11:36 - Mo:919530489323 - pdd:9339 - lpm:78JIOP - pas:"
  [1]=>
  string(10) "29-05-2016"
  [2]=>
  string(5) "11:36"
  [3]=>
  string(10) "9530489323"
  [4]=>
  string(4) "9339"
  [5]=>
  string(6) "78JIOP"
  [6]=>
  string(0) ""
}
5

array(7) {
  [0]=>
  string(70) "Date:29-05-2016 11:36 - Mo:919530489323 - pdd:9339 - lpm:78JIOP - pas:"
  [1]=>
  string(10) "29-05-2016"
  [2]=>
  string(5) "11:36"
  [3]=>
  string(10) "9530489323"
  [4]=>
  string(4) "9339"
  [5]=>
  string(6) "78JIOP"
  [6]=>
  string(0) ""
}
6

Điều kỳ lạ thậm chí là mẫu preg_match hoạt động khi tôi kiểm tra nó với người kiểm tra trực tuyến như thế này: https://www.function-online.com/preg_match.html
https://www.functions-online.com/preg_match.html

Bất kỳ ý tưởng sẽ thực sự được chào đón, chúc mừng!


Hãy thử Regex này /^[~ & A-Z0-9 _-]+$ /i/^[~&a-z0-9 _-]+$/i

Tôi đã thử nghiệm nó trên trang web này http://www.regexr.com/ và trong mã PHP, cả hai đều hoạt động. Dưới đây là một mã ví dụ.

Mã PHP:

array(7) {
  [0]=>
  string(70) "Date:29-05-2016 11:36 - Mo:919530489323 - pdd:9339 - lpm:78JIOP - pas:"
  [1]=>
  string(10) "29-05-2016"
  [2]=>
  string(5) "11:36"
  [3]=>
  string(10) "9530489323"
  [4]=>
  string(4) "9339"
  [5]=>
  string(6) "78JIOP"
  [6]=>
  string(0) ""
}
7

array(7) {
  [0]=>
  string(70) "Date:29-05-2016 11:36 - Mo:919530489323 - pdd:9339 - lpm:78JIOP - pas:"
  [1]=>
  string(10) "29-05-2016"
  [2]=>
  string(5) "11:36"
  [3]=>
  string(10) "9530489323"
  [4]=>
  string(4) "9339"
  [5]=>
  string(6) "78JIOP"
  [6]=>
  string(0) ""
}
8

array(7) {
  [0]=>
  string(70) "Date:29-05-2016 11:36 - Mo:919530489323 - pdd:9339 - lpm:78JIOP - pas:"
  [1]=>
  string(10) "29-05-2016"
  [2]=>
  string(5) "11:36"
  [3]=>
  string(10) "9530489323"
  [4]=>
  string(4) "9339"
  [5]=>
  string(6) "78JIOP"
  [6]=>
  string(0) ""
}
9

Điều kỳ lạ thậm chí là mẫu preg_match hoạt động khi tôi kiểm tra nó với người kiểm tra trực tuyến như thế này: https://www.function-online.com/preg_match.html

  • Hướng dẫn preg_match not working properly in php - Preg_match không hoạt động bình thường trong php
    Latararalnewbie
    Newbie
  • Hướng dẫn preg_match not working properly in php - Preg_match không hoạt động bình thường trong php

  • Hướng dẫn preg_match not working properly in php - Preg_match không hoạt động bình thường trong php

  • Bài viết: 4Threads: 1Joined: Apr 2015Rputation: 0 4
    Threads: 1
    Joined: Apr 2015

    Reputation: 0


04-30-2015, 06:

chào các cậu

Tôi đã dành hàng giờ cho vấn đề preg_match này và tôi đã googled ar $ e của mình và tôi vẫn hoàn toàn bối rối. Tôi hy vọng ai đó thông minh hơn tôi (không nên khó) có thể cho tôi biết những gì có thể xảy ra ...

Tôi có một trường biểu mẫu mà tôi đang xác thực với một cuộc gọi lại. Trong chức năng gọi lại, tôi đang sử dụng preg_match để đảm bảo trường chỉ chứa các ký tự chữ và số, không gian, dấu gạch nối, gạch dưới và ampersand. & nbsp; Vấn đề của tôi là xác nhận ampersand và

'Foo & Bar' là hợp lệ (tuyệt vời!). 'Foo & Bar' là hợp lệ (tuyệt vời!) 'Foo & b' là hợp lệ (tuyệt vời!) 'Foo & ba' không hợp lệ (tại sao ?!) '

Đây là mã của tôi:


Mã PHP:

Điều kỳ lạ thậm chí là mẫu preg_match hoạt động khi tôi kiểm tra nó với người kiểm tra trực tuyến như thế này: https://www.function-online.com/preg_match.html

Bất kỳ ý tưởng sẽ thực sự được chào đón, chúc mừng!

Hãy thử Regex này /^[~ & A-Z0-9 _-]+$ /i

  • Hướng dẫn preg_match not working properly in php - Preg_match không hoạt động bình thường trong php
    Latararalnewbie
    Newbie
  • Hướng dẫn preg_match not working properly in php - Preg_match không hoạt động bình thường trong php

  • Hướng dẫn preg_match not working properly in php - Preg_match không hoạt động bình thường trong php

  • Bài viết: 4Threads: 1Joined: Apr 2015Rputation: 0 4
    Threads: 1
    Joined: Apr 2015

    Reputation: 0


04-30-2015, 06:
http://php.net/manual/en/regexp.referenc...miters.php
The delimiter is the first and last character in the pattern, inside the quotes. You use "/", I use "~".

chào các cậu

Mã PHP:

<?php

$data="Date:29-05-2016 11:36 - Mo:919530489323 - pdd:9339 - lpm:78JIOP - pas:sami";
preg_match('#^Date:(.*?) (.*?) - Mo:91(.*?) - pdd:(.*?) - lpm:(.*?) - pas:(.*?)$#',$data,$matches);         

var_dump($matches);
0

array(7) {
  [0]=>
  string(70) "Date:29-05-2016 11:36 - Mo:919530489323 - pdd:9339 - lpm:78JIOP - pas:"
  [1]=>
  string(10) "29-05-2016"
  [2]=>
  string(5) "11:36"
  [3]=>
  string(10) "9530489323"
  [4]=>
  string(4) "9339"
  [5]=>
  string(6) "78JIOP"
  [6]=>
  string(0) ""
}
8

<?php

$data="Date:29-05-2016 11:36 - Mo:919530489323 - pdd:9339 - lpm:78JIOP - pas:sami";
preg_match('#^Date:(.*?) (.*?) - Mo:91(.*?) - pdd:(.*?) - lpm:(.*?) - pas:(.*?)$#',$data,$matches);         

var_dump($matches);
2

Điều kỳ lạ thậm chí là mẫu preg_match hoạt động khi tôi kiểm tra nó với người kiểm tra trực tuyến như thế này: https://www.function-online.com/preg_match.html

Bất kỳ ý tưởng sẽ thực sự được chào đón, chúc mừng!
Foo& Bar is valid
Foo&B is valid
Foo&Ba is valid
Foo&Bar is valid
Foo-Bar is valid
Foo_Bar is valid
Foo ~ Bar is invalid

Hãy thử Regex này /^[~ & A-Z0-9 _-]+$ /i

Tôi đã thử nghiệm nó trên trang web này http://www.regexr.com/ và trong mã PHP, cả hai đều hoạt động. Dưới đây là một mã ví dụ.

Tất cả các chuỗi kiểm tra trong mảng trả về true khi được kiểm tra.

  • Hướng dẫn preg_match not working properly in php - Preg_match không hoạt động bình thường trong php
    Latararalnewbie
    Newbie
  • Hướng dẫn preg_match not working properly in php - Preg_match không hoạt động bình thường trong php

  • Hướng dẫn preg_match not working properly in php - Preg_match không hoạt động bình thường trong php

  • Bài viết: 4Threads: 1Joined: Apr 2015Rputation: 0 4
    Threads: 1
    Joined: Apr 2015

    Reputation: 0

05-01-2015, 04:11 PM (Bài đăng này đã được sửa đổi lần cuối: 05-01-2015, 04:17 PM bởi Loothrial. Chỉnh sửa Lý do: đã đề cập tôi đã sử dụng tạp hóa
(This post was last modified: 05-01-2015, 04:17 PM by latearrival. Edit Reason: mentioned i was using grocery_crud )


Đó là những gì đang xảy ra!

Khi - và chỉ khi - trường biểu mẫu được xác nhận, dù sao đi nữa, một ampersand và theo sau ngay lập tức là hai hoặc nhiều ký tự (ví dụchức năng gọi lại.

Vì vậy, ví dụ - người dùng nhập "FOO & B" và chức năng gọi lại được truyền "FOO & B" để xác thực.- Người dùng nhập "Foo & Bar" và chức năng gọi lại được truyền "Foo & Bar;"để xác nhận.
- User enters "foo&b" and the callback function is passed "foo&b" to validate.
- User enters "foo&bar" and the callback function is passed "foo&bar;" to validate.

Rõ ràng, tôi có thể giải quyết điều này bây giờ.Tôi không biết tại sao nó lại xảy ra!Tôi đang sử dụng hàng tạp hóa với Codeigniter để giải thích có lẽ bị chôn sâu bên trong một trong những khung đó.

Cảm ơn bạn đã giúp đỡ.