⊗ppPmRgVA 258 of 447 menu

Lookahead trong biểu thức chính quy PHP

Đôi khi cần giải quyết bài toán dạng này: tìm chuỗi 'aaa' và thay thế nó bằng '!', nhưng chỉ khi sau 'aaa''x', còn bản thân 'x' thì không thay thế. Nếu cố giải bài toán này 'một cách trực tiếp', chúng ta sẽ không thành công:

<?php preg_replace('#aaax#', '!', 'aaax'); // sẽ là '!', nhưng cần '!x' ?>

Để giải bài toán, cần một cách để nói rằng 'x' không nên bị thay thế. Điều này được thực hiện bằng các dấu ngoặc đặc biệt (?= ), chỉ "nhìn" nhưng không "lấy" theo.

Các dấu ngoặc này được gọi là positive lookahead . Positive - bởi vì 'x' (trong trường hợp của chúng ta) phải tồn tại - chỉ khi đó việc thay thế mới xảy ra.

Hãy áp dụng các dấu ngoặc này để giải bài toán của chúng ta:

<?php preg_replace('#aaa(?=x)#', '!', 'aaax'); // trả về '!x' ?>

Ngoài ra còn có negative lookahead - (?! ) - nó, ngược lại, nói rằng một cái gì đó phải không tồn tại. Trong ví dụ tiếp theo, việc thay thế sẽ xảy ra, chỉ khi sau 'aaa' không phải là 'x':

<?php preg_replace('#aaa(?!x)#', '!', 'aaab'); // trả về '!b' ?>

Cho một chuỗi chứa tên các hàm:

<?php $str = 'func1() func2() func3()'; ?>

Lấy mảng tên các hàm từ chuỗi.

Cho một chuỗi với thẻ:

<?php $str = '<a href="" class="eee" id="zzz">'; ?>

Lấy mảng tên các thuộc tính của thẻ này.

Tiếng Việt
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbek
Chúng tôi sử dụng cookie để vận hành trang web, phân tích và cá nhân hóa. Việc xử lý dữ liệu được thực hiện tuân theo Chính sách bảo mật.
chấp nhận tất cả tùy chỉnh từ chối