Trang chủTrang chủ Liên hệLiên hệ
PHP BASIC

» Events  » References  » Tutorials  » Hướng dẫn  RSS Feed2.0 Đăng ký | Đăng nhập

Dịch PHP Manual (đã dịch 86 /1248)
Thêm bài viết mới
#Thêm ý kiến
Emotion|Show / Hide

Trong các biểu thức so mẫu(Cơ bản về RegExp) chúng ta sử dụng #s để lấy dữ liệu trên nhiều dòng, và thường mắc phải trường hợp sau:
<?php
$str
= "Đây là đoạn so mẫu cần lấy<start>Text1</start> thứ nhất và cần lấy <start>Text2</start> thứ 2";
//so mẫu
preg_match_all('#<start>(.*)</start>#s',$str,$array);
print_r($array);
?>
Kết quả:  
Array
(
    [0] => Array
        (
            [0] => <start>Text1</start> thứ nhất và cần lấy <start>Text2</start>
        )

    [1] => Array
        (
            [0] => Text1</start> thứ nhất và cần lấy <start>Text2
        )

)

Như vậy so mẫu trên sẽ lấy ra nguyên chuỗi
<start>Text1</start> thứ nhất và cần lấy <start>Text2</start>
và chuỗi này không như mong đợi, cái ta cần lấy phải là 2 chuỗi riêng biệt <start>Text1</start> và <start>Text2</start>

Để giải quyết cái này, bạn có thể thực hiện đơn giản bằng cách thêm ? vào câu so mẫu trên, và câu so mẫu sẽ được viết lại như sau:
<?php
$str
= "Đây là đoạn so mẫu cần lấy<start>Text1</start> thứ nhất và cần lấy <start>Text2</start> thứ 2";
//so mẫu
preg_match_all('#<start>(.*?)</start>#s',$str,$array);
print_r($array);
?>
và kết quả:  

Array
(
    [0] => Array
        (
            [0] => <start>Text1</start>
            [1] => <start>Text2</start>
        )

    [1] => Array
        (
            [0] => Text1
            [1] => Text2
        )

)

Nhờ phát hiện này TG đã sữa lại phần BBcode lỗi bấy lâu của phpbasic.com :)

Tác giả:TG
Webmaster
http://phpbasic.com

Show / Hide
#Thêm ý kiến

Add phpBasic to your browser's search box
Digg.com delicious Furl Google Bookmark Reddit Slashdot Yahoo My Web

Tableless template Framework PHP functions
 


XHTML Standard
Xây dựng & phát triển bởi tất cả các thành viên.
Powered by http://phpbasic.com