2010-09-06 25 views

Trả lời

21

Để cổng ereg_replace để preg_replace bạn cần phải đặt regex giữa một cặp delimiter

Cũng regx của bạn được [\]không hợp lệ được sử dụng cho preg_replace như \ được thoát khỏi bế mạc char class ]

Cổng chính xác là

preg_replace('/[\\\]/','',$theData) 

Cũng kể từ khi lớp char có chỉ là một char không có nhu cầu thực sự của lớp char bạn chỉ có thể nói:

preg_replace('/\\\/','',$theData) 

Vì bạn là thay thế chỉ là một char duy nhất, sử dụng regex cho điều này không được khuyến khích . Bạn nên sử dụng một sự thay thế văn bản đơn giản sử dụng str_replace như:

str_replace('\\','',$data); 
+1

. '/ \\\ /' sẽ dẫn đến thoát khỏi dấu gạch chéo phía trước bởi preg_replace, bạn cần 4 dấu gạch chéo ngược –

+3

@Yanick chỉ cần thử nó –

+0

@Yanick, không có nó sẽ không. 'preg_replace' thấy nó như/\\ /, mà nó Hãy giải thích rằng '/ \\\\ /' là * cũng * đúng, vì \\ và \ có thể mã hóa một dấu gạch chéo ngược trong một chuỗi ký tự. t \/không phải là một chuỗi thoát. –

2
str_replace("\\","",$theData); 

Nhưng tôi nghiêm túc nghi ngờ bạn cần mà thay thế cả. rất có thể bạn cần một số hoạt động khác.
Điều này thay thế cho điều gì?

0
preg_replace("/\\\/", "", $theData); 
0

Tôi sử dụng này sed để tự động thay thế ereg_replace bởi preg_replace và đặt dấu gạch chéo yêu cầu trong Giả không \" trong regex đầu tiên

sed -i 's#ereg_replace("\([^"]*\)"#preg_replace("/\1/"#g' *.php 
Các vấn đề liên quan