PHP preg_replace()編集に失敗した:missing)
-
16-09-2019 - |
質問
私は、以下の機能に戻りクリーンパスを記述します。
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のエラー:
警告:preg_replaceす。め馴染ませ替え]:編集 失敗した:missing)オフセット7 C:\wamp\www\extlogin\app i\inc\classes\cfiletree.php 上線 18
そのアイデアで何が悪いとどこを直せばいいの?
お願い致します。
解決
ほとんどのDIRECTORY_SEPARATOR
は、それが\
をエスケープするのではなく、バックスラッシュと一致します意味)
です。あなたはそれが正規表現でDIRECTORY_SEPARATOR
なるよう\\
をエスケープする必要があります。
正規表現に配置された文字列をエスケープするための最も安全な方法はpreg_quote
を使用することです。
preg_quote(DIRECTORY_SEPARATOR, '#');
二番目の引数、'#'
は、あなたがあなたのケースで#
あるあなたの正規表現のために使用したセパレータである。
所属していません StackOverflow