2009-09-16 54 views
5

Tôi đã thử "m" modifier, nhưng không làm việc:Làm cách nào để bật chế độ biểu thức chính quy không phân biệt khoảng trắng trong PHP?

$reg = '/... 
     /m'; 

preg_match($reg,...,$match); 

EDIT

Hoặc có lẽ tôi cần một sửa đổi có thể bỏ qua khoảng trắng như ENTER, TAB và vân vân. Bởi vì khi tôi loại bỏ các khoảng trắng trong regex của tôi nó hoạt động.

EDIT LẠI:

Tôi cần một sửa đổi sao cho biểu thức chính quy

"/aaaa b/", 
"/aaaa 
b/" 

là những điều tương tự, nói rằng, nó chỉ bỏ qua các khoảng trắng trong tự regex.

+0

bạn có thể xây dựng tình bạn với các chi tiết bối cảnh nhiều hơn? – Eimantas

+0

có biết biểu thức chính quy của bạn cũng sẽ giúp ích gì. không khớp với dòng mới theo mặc định, nếu bạn cần. để phù hợp với thực sự bất cứ điều gì sử dụng s sửa đổi ... – RageZ

+0

Các bộ phận khác là tất cả OK, nhưng tôi cần phân tích cú pháp regex để bỏ qua không gian màu trắng trong regex, làm thế nào để? – omg

Trả lời

8

Các modifier gì bạn cần là x

print_r(preg_match('/aaa 
     bbb/x', 'aaabbb')); 
+0

Cuối cùng người ta hiểu tôi! – omg

0

Có thể bạn có vấn đề với dấu chấm không khớp với các dòng mới trong cụm từ thông dụng của bạn. Bạn có thể sử dụng công cụ sửa đổi s nó sẽ làm cho các chấm khớp với mọi thứ ngay cả dòng mới.

Hope this helps

nó sẽ cung cấp cho

/aaaaaaa.+b/ms 

Cũng sẽ là một thực hành tốt hơn để sử dụng \ n vì phụ thuộc vào soạn thảo của bạn (Unix hoặc cửa sổ) xuống dòng có thể là nhân vật khác nhau, CR + LF hoặc chỉ LF ... vì vậy mã của bạn sẽ không thể di chuyển được.

hoặc để thực sự bỏ qua khoảng trắng trong reg cũ

function formatRegEx($reg){ 
return preg_replace('/(\s+)/m', '\s+', $reg); 
} 
+0

Tôi cần phải sử dụng RETURN trong regex vì nó rất dài. Nếu không, nó sẽ khó để xem những gì trên trái đất nó làm. Dù sao, bằng cách nào đó, có một yêu cầu. Nhưng làm thế nào để kích hoạt chế độ này? – omg

Các vấn đề liên quan