PHP preg_replace () derleme başarısız oldu: eksik)

1 Cevap php

Ben bir komut dosyası için temiz bir yolunu dönmek için aşağıdaki işlevi var.

function cleanPath($path) {
    	$path = (string) $path;
    	$path = preg_replace(
    		array(
    		'#[\n\r\t\0]*#im',
    		'#/(\.){1,}/#i',
    		'#(\.){2,}#i',
    		'#(\.){2,}#i',
    		'#('.DIRECTORY_SEPARATOR.'){2,}#i'
    		),
    		array(
    		'',
    		'',
    		'',
    		'/'
    		),
    		$path
    		)
    	;
    	return rtrim($path,DIRECTORY_SEPARATOR);
    }

PHP hata veriyor:

Warning: preg_replace() [function.preg-replace]: Compilation failed: missing ) at offset 7 in C:\wamp\www\extlogin\app\ni\inc\classes\cfiletree.php on line 18

Herhangi bir yanlış ne ve nasıl düzeltebilirim fikir?

Teşekkür ederim.

1 Cevap

Büyük olasılıkla DIRECTORY_SEPARATOR o ) kaçmak yerine ters eğik çizgi maç olacak demektir \ hangi. Bunu regex \\ olur böylece DIRECTORY_SEPARATOR kaçmak gerekir.

Düzenli ifadeler yer dizeleri kaçmak için güvenli yolu kullanmaktır preg_quote:

preg_quote(DIRECTORY_SEPARATOR, '#');

İkinci argüman, '#', sizin durumda # sizin düzenli ifade için kullanmak ayırıcı.