Intereting Posts
Symfony не может найти файл шаблона Codeigniter – я ищу для использования / подключения к другой базе данных для одного из моих контроллеров и одной модели Laravel: Получить объект из коллекции по атрибуту Неустранимая ошибка: вызов неопределенной функции form_open () в c Вытягивание <s: variant> из подачи атома простым пирогом Кто-нибудь знает о плагине проверки орфографии для ckeditor, который использует aspell или аналогичную локальную службу вместо spellchecker.net? Массовая вставка в Laravel с использованием красноречивой ORM Laravel 4 Cascading Soft Deletes Как передать несколько флажков на PHP через JQUERY Внедрение PDF-файла на веб-страницу без использования встроенного средства просмотра PDF Обнаружение, если PCRE был создан без параметров –enable-unicode или -enable-utf8 Как поймать идентификатор из sfUser? Создание мобильного приложения в Symfony2 Проверьте, существует ли имя пользователя в таблице mysql через php? Сделать точки между числами в php

Хорошая альтернатива eregi () в PHP

Я часто нахожу, что делаю быстрые проверки следующим образом:

if (!eregi('.php', $fileName)) { $filename .= '.php'; } 

Но поскольку eregi() устарел в PHP 5.3, код теперь выдает ошибки.

Есть ли другая функция, которая ведет себя точно так же, как eregi() ? Я ничего не знаю о регулярных выражениях и не хочу учиться, поэтому preg_match() т. Д. Не будут работать для меня.

stristr достигает точно такого же результата, как eregi (по крайней мере, когда вы не используете регулярные выражения):

 if (!stristr($fileName, '.php')) $filename.='.php'; 

Вы также можете сделать «поддельный» ереги следующим образом:

 if (!function_exists('eregi')) { function eregi($find, $str) { return stristr($str, $find); } } 

Обновление : обратите внимание, что stristr не принимает регулярные выражения как eregi , и для этого конкретного случая (проверка расширения) вам лучше пойти с решением vartec.

Конечно, вы знаете, что это не делает то, что вы ожидаете от этого? В regexp '.' означает любой символ, поэтому eregi('.php',$fileName) означает имя файла с любым символом, за которым следует 'php'. Таким образом, например, «blabla2PHP.txt» будет соответствовать вашему регулярному выражению.

Теперь вы хотите сделать следующее:

 $file_ext = pathinfo($filename, PATHINFO_EXTENSION); if(strtolower($file_ext) != 'php') $filename .= '.php'; 

Хорошей альтернативой для eregi() является preg_match() с модификатором i :

 if (! preg_match('/.php/i',$fileName)) $filename.='.php'; 

Попробуйте это, я использую это довольно много, так как недавно обновился до PHP 5.

Ранее:

 if(eregi('-', $_GET['id']) { return true; } 

Теперь я использую это – он работает так же хорошо.

 if(preg_match('/(.+)-(.+)/', $_GET['id'])) { { return true; } 

Просто замените свой код следующим, и у вас не должно быть никаких ограничений в вашем коде. Если вам интересно, почему PHP удаляет eregi (), это из-за проблем с производительностью, которые он имеет при многократном использовании, поэтому лучше использовать preg_match (), поскольку он более специфичен в поиске, поэтому он имеет лучшую производительность и время рендеринга.

Дайте мне знать, как это работает для вас.

Если вы идете на «фальшивый» ереги, вы сожжете триггерное уведомление внутри поддельной функции: trigger_error («Некоторый код все еще использует eregi», E_USER_NOTICE); Таким образом, вы легко поймете забытые звонки ереги и сможете их заменить.

Возможно, вам стоит подумать о том, чтобы переделать ваш код, чтобы это сделать:

 if (substr($fileName, -4, 4) !== '.php') $fileName .= '.php'; 

Как указано в других ответах на этот вопрос, eregi('.php') будет искать что-либо, за которым следует «php» ANYWERE в файле (не только в конце).

Обычно я создаю и концы с функцией; или другие простые функции манипулирования строками для такого рода материалов.

 function endsWith($string, $end){ return substr($string, -strlen($end)) == $end; } 

if (! stristr ($ fileName, '.php')) $ filename. = '. php';

Параметры опроса moff имели параметры назад.

http://php.net/manual/en/function.stristr.php