|
|
|
| Во многих старых кодах осталась функия eregi()
А сейчас её убирают из php - непонятно почему, ведь она очень популярная и полезная.
Как теперь находить подстроки.
Было так:
if(eregi("искомое слово", "строка, в которой искать)) echo "Найдено!";
|
Как теперь быть в таких случаях? Пример!!! | |
|
|
|
|
|
|
|
для: Владимир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! | |
|
|
|
|
|
|
|
для: Владимир22
(16.04.2013 в 15:07)
| | Конкретно на Вашем примере код будет слещующим:
<?
if(preg_match("#искомое слово#i", "строка, в которой искать искомое слово",$res)) {
echo "Найдено!";
print_r($res);
} else {
echo "Не найдено!";
}
?>
|
| |
|
|
|
|
|
|
|
для: man1
(16.04.2013 в 17:33)
| | Спасибо, всё очень подробно и понятно объяснили. | |
|
|
|