Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Устаревшее обозначение, как по-новому и правильно?
 
 автор: Владимир22   (16.04.2013 в 15:07)   письмо автору
 
 

Во многих старых кодах осталась функия eregi()
А сейчас её убирают из php - непонятно почему, ведь она очень популярная и полезная.
Как теперь находить подстроки.
Было так:
if(eregi("искомое слово", "строка, в которой искать)) echo "Найдено!";

Как теперь быть в таких случаях? Пример!!!

  Ответить  
 
 автор: man1   (16.04.2013 в 17:28)   письмо автору
 
   для: Владимир22   (16.04.2013 в 15:07)
 

В PHP 5.3 разработчки решили, наконец, избавиться от POSIX регулярных выражений — в самом деле, зачем нужны две библиотеки для работы с регулярными выражениями, если можно обойтись одной? К тому же, POSIX регулярные выражения гораздо медленнее чем Perl совместимые регулярные выражения (PCRE).

Теперь, разработчики в срочном порядке исправляют свой код, заменяя функции ereg, eregi, ereg_replace, ereg_replacei соответствующими PCRE аналогами, благо, замена получилась довольно простой:

1. заменить ereg и eregi на preg_match, ereg_replace и ereg_replacei на preg_repalce;
2. добавить // разделители в начало и конец регулярного выражения;
3. если POSIX функция кончается на i (eregi, ereg_replacei) то добавить i в конец регулярного выражения после разделителя.
4. заменить POSIX спецсимволы соответствуюущими PCRE аналогами: [:alnum:] — \w или [0-9a-z], [:digit:] — \d или [0-9], [:space:] — \s, [:alpha:] — [a-z]

примеры:

ereg(‘expression’) -> preg_match(‘/expression/’)

eregi(‘expression’) -> preg_match(‘/expression/i’)

eregi(‘^[[:alnum:]][a-z0-9_.-]*@[a-z0-9.-]+\.[a-z]{2,4}$’) -> preg_match(‘/^[a-z0-9][a-z0-9_.-]*@[a-z0-9.-]+\.[a-z]{2,4}$/i’)

Кроме того, оказывается шаг четвертый не обязателен — спецсимволы типа [[:alnum:]] теперь поддерживаются в PCRE!

  Ответить  
 
 автор: man1   (16.04.2013 в 17:33)   письмо автору
 
   для: Владимир22   (16.04.2013 в 15:07)
 

Конкретно на Вашем примере код будет слещующим:

<?

if(preg_match("#искомое слово#i""строка, в которой искать искомое слово",$res)) {
    echo 
"Найдено!";
    
print_r($res);
} else {
    echo 
"Не найдено!";
}

?>

  Ответить  
 
 автор: Владимир22   (16.04.2013 в 20:50)   письмо автору
 
   для: man1   (16.04.2013 в 17:33)
 

Спасибо, всё очень подробно и понятно объяснили.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования