2010-09-06 23 views

Odpowiedz

21

Do portu ereg_replace do preg_replace trzeba umieścić regex między parą ogranicznik

również Twoim regx jest [\] jest nieważny być wykorzystywane do preg_replace jako \ ucieka zamykanie Klasa klasy ]

Prawidłowy port to

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

Również ponieważ klasa char ma tylko jeden char nie ma rzeczywistej potrzeby klasy char można po prostu powiedzieć:

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

Ponieważ jesteś wymienić tylko jeden char, używając regex nie jest to zalecane . Trzeba mieć za pomocą prostego zastępowania tekstu przy użyciu str_replace jak:

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

. "/ \\\ /" spowoduje przejście do ukośnika w przód przez preg_replace, potrzebujesz 4 ukośników odwrotnych –

+3

@Yanick po prostu spróbuj –

+0

@Yanick, nie, nie będzie. 'preg_replace' widzi go jako/\\ /, które to dekoduje jako dosłowny ukośnik odwrotny w separatorach. Zwróć uwagę, że '/ \\\\ /' jest * również * poprawne, ponieważ \\ i \ mogą zarówno kodować ukośnik odwrotny w literale łańcuchowym. t \/nie jest ucieczką ciągu znaków. –

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

Ale wątpię, że trzeba wymienić w ogóle. najprawdopodobniej potrzebujesz innej operacji.
Co to jest zamień?

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

użyłem tego sed automatycznie zastąpić ereg_replace przez preg_replace i umieścić wymaganych ukośniki w nie ponosi \”w pierwszym regex

sed -i 's#ereg_replace("\([^"]*\)"#preg_replace("/\1/"#g' *.php 
Powiązane problemy