質問

私は、以下の機能に戻りクリーンパスを記述します。

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, '#');

二番目の引数、'#'は、あなたがあなたのケースで#あるあなたの正規表現のために使用したセパレータである。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top