странное php регулярное уведомление - PullRequest
3 голосов
/ 06 декабря 2011

Я пытаюсь написать функцию для преобразования неправильных имен файлов в правильные имена файлов. Я попытался сделать это с помощью регулярного выражения, которое работает хорошо, но выдает уведомление каждый раз, когда пытается исправить имя. Это мой код:

private function clean_filename($filename) {
    $reserved = preg_quote('\/:*?"<>|', '/');
    $filename = preg_replace("/([\\x00-\\x20\\x7f-\\xff" .$reserved . "])/e", "_", $filename);
    return $filename;
}

Уведомление:

Примечание: использование неопределенной константы _ - предполагается, что '_' в C: \ Documents and Settings \ A dministrator \ Desktop \ script \ script.php (89): регулярное выражение в строке 1

В чем может быть проблема? Заранее спасибо !!

1 Ответ

5 голосов
/ 06 декабря 2011

Использование e вызывает оценку как выражение PHP.Таким образом, вы должны использовать:

$filename = preg_replace("/([\\x00-\\x20\\x7f-\\xff" .$reserved . "])/e",
    "'_'", $filename); //or "\"_\""; or '"_"' etc.

Еще лучше, если вместо этого вы уберете флаг e, поскольку он вам не нужен (ваше выражение замены фиксировано; это всегда символ подчеркивания).

$filename = preg_replace("/([\\x00-\\x20\\x7f-\\xff" .$reserved . "])/",
    "_", $filename);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...