2013-09-27 230 views
41

Tôi đã nhận ra lỗi của regex này ..Cảnh báo: preg_replace(): Unknown modifier 'g'

$strTmp = preg_replace('~(<\/CharacterStyleRange>(.*?)\n*</CharacterStyleRange>)~gim ' , "</CharacterStyleRange>", $strTmp); 

lỗi

Cảnh báo: preg_replace(): Unknown modifier 'g' in ....

tại sao?

Trả lời

106

g là ẩn với preg_replace(), bạn không cần phải bao gồm nó.

30

Bạn không phải chỉ định cờ toàn cầu. Từ documentation, có một thông số riêng biệt ($limit) dùng để xác định số lượng thay thế để thực hiện:

hạn
Các thay thế tối đa có thể cho mỗi mẫu trong mỗi chuỗi chủ đề. Mặc định là -1 (không giới hạn).

Vì vậy, trừ khi bạn chỉ định một số dương tính với tham số này, nó sẽ thay thế tất cả xảy ra theo mặc định:

$strTmp = preg_replace('~(<\/CharacterStyleRange>(.*?)\n*</CharacterStyleRange>)~im ' , "</CharacterStyleRange>", $strTmp);