Tôi gặp vấn đề có vẻ đơn giản khi đối mặt với nó nhưng đã đánh bại kỹ năng regex ít ỏi của tôi. Tôi có một chuỗi mà tôi cần phải chuyển đổi thành một mảng và sau đó xử lý các giá trị tương ứng, đủ đơn giản, nhưng định dạng của chuỗi không thể thay đổi được (nó được tạo ở nơi khác) và logic của nó khiến tôi bối rối.Làm thế nào để tách chuỗi thành chuỗi 2D với Regex?
Chuỗi là:
[6] [2] [3] 12.00; [5] [4]
Đó là cơ bản một tập hợp các id và giá trị thập phân (trong trường hợp này id 3 == 12.00). Số lượng id có thể thay đổi tại bất kỳ thời điểm nào và giá trị thập phân có thể nằm trong bất kỳ hoặc tất cả các id.
Trong một thế giới lý tưởng tôi sẽ phải các mảng sau:
Array (
[0] => Array (
[id] => 6
[num] =>
)
[1] => Array (
[id] => 2
[num] =>
)
[2] => Array (
[id] => 3
[num] => 12.00
)
Etc...
Do bất kỳ của bạn phù thủy regex biết làm thế nào điều này có thể được thực hiện với ít chửi thề hơn tôi đã có thể đạt được?
tôi đã vậy, đến nay đã có thể trích xuất các id sử dụng:
preg_match_all('@\[(.*?)\]@s', $string, $array);
và số thập phân sử dụng:
preg_match_all('/([0-9]+[,\.]{1}[0-9]{2})/', $string, $array);
nhưng mất mối tương quan giữa id và giá trị.
bạn có thể giải quyết vấn đề này với nổ & strstr của nó tốt hơn so với regex trong nhiệm kỳ của hiệu suất. – shox