ereg_replace
Эта функция сканирует строку string для поиска совпадений с pattern , затем заменяет совпавший текст на replacement .
Внимание
С версии PHP 5.3.0 эта функция считается УСТАРЕВШЕЙ. Крайне не рекомендуется полагаться на эту возможность.
Список параметров
Расширенное регулярное выражение POSIX.
Если pattern содержит подстроки в скобках, replacement может содержать подстроки вида \ digit , которые будут заменены текстом, совпавшим с digit-подстрокой в скобках; \0 воспроизведет все содержимое строки. Может использоваться до 9 подстрок. Круглые скобки могут быть вложенными, в этом случае они подсчитываются по открывающим скобкам.
Возвращаемые значения
Возвращается измененная строка. Если в строке string совпадений не найдено, она возвратится без изменений.
Примеры
Например, следующий фрагмент кода печатает «This was a test» три раза:
Пример #1 Пример использования ereg_replace()
$string = «This is a test» ;
echo str_replace ( » is» , » was» , $string );
echo ereg_replace ( «( )is» , «\\1was» , $string );
echo ereg_replace ( «(( )is)» , «\\2was» , $string );
Единственное, что следует принять к сведению — если вы используете целочисленное значение как параметр replacement , вы можете не получить ожидаемого результата. Это происходит из-за того, что функция ereg_replace() будет интерпретировать число как порядковое значение символа. Например:
Пример #2 Пример использования ereg_replace()
/* Это будет работать не так, как ожидалось. */
$num = 4 ;
$string = «В этой строке четыре слова.» ;
$string = ereg_replace ( ‘четыре’ , $num , $string );
echo $string ; /* Вывод: ‘В этой строке слова.’ */
?php
/* Это будет работать. */
$num = ‘4’ ;
$string = «В этой строке четыре слова.» ;
$string = ereg_replace ( ‘четыре’ , $num , $string );
echo $string ; /* Вывод: ‘В этой строке 4 слова.’ */
?>
Пример #3 Замена URL-адресов на ссылки
Примечания
Замечание:
С версии PHP 5.3.0, расширение regex помечено устаревшим и заменено расширением PCRE. Вызов этой функции приведет к ошибке уровня E_DEPRECATED . Смотрите список отличий для помощи при конвертировании в PCRE.
Подсказка
Функция ereg_replace() является устаревшей начиная с PHP 5.3.0. Предлагается использовать вместо неё функцию preg_replace() .
Смотрите также
- ereg() — Совпадение с регулярным выражением
- eregi() — Совпадение с регулярным выражением без учёта регистра
- eregi_replace() — Осуществляет замену по регулярному выражению без учета регистра
- str_replace() — Заменяет все вхождения строки поиска на строку замены
- preg_replace() — Выполняет поиск и замену по регулярному выражению
- quotemeta() — Экранирует специальные символы
Eregi php чем заменить
Здесь могла бы быть ваша реклама
Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006
Откуда: Israel
Помог: 3 раз(а)
Секрет
Теперь, когда вы уже наверняка второпях отправили свой запрос,
я расскажу вам простой секрет, который сэкономит вам уйму ожиданий,
даже если первый ответ по теме последуем сразу же.
Само собой я знаю что ответят мне тут же, и если я посмотрю
на сообщения на форуме, то пойму что в общем то я и не ошибаюсь.
Но еще я точно замечу, что очень мало тем, в которых всего два ответа :
вопрос автора и еще два сообщение вида Ответ + Спасибо
После этого приходится начинать уточнять этим неграмотным что мне надо.
Они что, сами читать не умеют? А уточнять приходится.
И иногда пока они переварят то что я им скажу проходит и не одна ночь..
Уверен что если бы я им сказал что у меня есть
фиолетовый квадрат, и нужно превратить его в синий треугольник
и я пытался взять кисточку, макнуть в банку и поводить ей по квадрату
но почему то кисточка не принимала цвет краски в банке,
то на мой вопрос — где взять правильные банки мне бы ответили гораздо быстрее
предложив её открыть, а не тратить еще стольник на жестянку.
Поэтому с тех пор я строю свои вопросы по проверенной давным давно схеме:
Что есть
Что нужно получить
Как я пытался
Почему или что у меня не получилось.
На последок как оно происходит на форумах
Цитата:
Новичок: Подскажите пожалуста самый крепкий сорт дерева! Весь инет перерыл, поиском пользовался!
Старожил: Объясни, зачем тебе понадобилось дерево? Сейчас оно в строительстве практически не используется.
Новичок: Я небоскрёб собираюсь строить. Хочу узнать, из какого дерева делать перекрытия между этажами!
Старожил: Какое дерево? Ты вообще соображаешь, что говоришь?
Новичок: Чем мне нравиться этот форум — из двух ответов ниодного конкретного. Одни вопросы неподелу!
Старожил: Не нравится — тебя здесь никто не держит. Но если ты не соображаешь, что из дерева небоскрёбы не строят, то лучше бы тебе сначала школу закончить.
Новичок: Не знаите — лучше молчите! У меня дедушка в деревянном доме живёт! У НЕГО НИЧЕГО НЕ ЛОМАЕТСЯ.
Но у него дом из сосны, а я понимаю, что для небоскрёба нужно дерево прочнее! Поэтому и спрашиваю. А от вас нормального ответа недождёшся.
Прохожий: Самое крепкое дерево — дуб. Вот тебе технология вымачивания дуба в солёной воде, она придаёт дубу особую прочность:
Новичок: Спасибо, братан! То что нужно.
Отредактировано модератором: Uchkuma, 26 Апреля, 2011 — 10:21:12
Замена eregi() на preg_match()

Всем привет, нужно перевести функцию eregi(), в preg_match(), постоянно возникают проблемы с синтаксисом и тд, хотя и разделители правильно стоят. Жду ваших вариантов. Частая ошибка:SQL-Injection.
1 2 3 4 5 6 7 8
if (isset($_POST['account'])) if (Замена eregi() на preg_match()
Всем привет, нужно перевести функцию eregi(), в preg_match(), постоянно возникают проблемы с синтаксисом и тд, хотя и разделители правильно стоят. Жду ваших вариантов. Частая ошибка:SQL-Injection.
1 2 3 4 5 6 7 8if (isset($_POST['account'])) telnet else { if (!mysql_query("INSERT INTO account (username, sha_pass_hash, email, expansion) VALUES ('$username', SHA1(CONCAT(UPPER('$username'),':',UPPER('$pass'))), '".$_POST['email']."', $tbc)", $realmd)) {echo "";} else {echo " Ошибка
";} } } else { echo " Аккаунт успешно зарегистрирован!
"; } } ?> Проверьте правильность ввода!
POST
['account'] && strlen(Замена eregi() на preg_match()
Всем привет, нужно перевести функцию eregi(), в preg_match(), постоянно возникают проблемы с синтаксисом и тд, хотя и разделители правильно стоят. Жду ваших вариантов. Частая ошибка:SQL-Injection.
1 2 3 4 5 6 7 8if (isset($_POST['account'])) telnet else { if (!mysql_query("INSERT INTO account (username, sha_pass_hash, email, expansion) VALUES ('$username', SHA1(CONCAT(UPPER('$username'),':',UPPER('$pass'))), '".$_POST['email']."', $tbc)", $realmd)) {echo "";} else {echo " Ошибка
";} } } else { echo " Аккаунт успешно зарегистрирован!
"; } } ?> Проверьте правильность ввода!
POST
['account'])20 && strlen(Замена eregi() на preg_match()
Всем привет, нужно перевести функцию eregi(), в preg_match(), постоянно возникают проблемы с синтаксисом и тд, хотя и разделители правильно стоят. Жду ваших вариантов. Частая ошибка:SQL-Injection.
1 2 3 4 5 6 7 8if (isset($_POST['account'])) telnet else { if (!mysql_query("INSERT INTO account (username, sha_pass_hash, email, expansion) VALUES ('$username', SHA1(CONCAT(UPPER('$username'),':',UPPER('$pass'))), '".$_POST['email']."', $tbc)", $realmd)) {echo "";} else {echo " Ошибка
";} } } else { echo " Аккаунт успешно зарегистрирован!
"; } } ?> Проверьте правильность ввода!
POST
['account'])>=3 && strlen(Замена eregi() на preg_match()
Всем привет, нужно перевести функцию eregi(), в preg_match(), постоянно возникают проблемы с синтаксисом и тд, хотя и разделители правильно стоят. Жду ваших вариантов. Частая ошибка:SQL-Injection.
1 2 3 4 5 6 7 8if (isset($_POST['account'])) news else { if (!mysql_query("INSERT INTO account (username, sha_pass_hash, email, expansion) VALUES ('$username', SHA1(CONCAT(UPPER('$username'),':',UPPER('$pass'))), '".$_POST['email']."', $tbc)", $realmd)) {echo "";} else {echo " Ошибка
";} } } else { echo " Аккаунт успешно зарегистрирован!
"; } } ?> Проверьте правильность ввода!
POST
['password'])>=3 &&Замена eregi() на preg_match()
Всем привет, нужно перевести функцию eregi(), в preg_match(), постоянно возникают проблемы с синтаксисом и тд, хотя и разделители правильно стоят. Жду ваших вариантов. Частая ошибка:SQL-Injection.
1 2 3 4 5 6 7 8if (isset($_POST['account'])) gopher else { if (!mysql_query("INSERT INTO account (username, sha_pass_hash, email, expansion) VALUES ('$username', SHA1(CONCAT(UPPER('$username'),':',UPPER('$pass'))), '".$_POST['email']."', $tbc)", $realmd)) {echo "";} else {echo " Ошибка
";} } } else { echo " Аккаунт успешно зарегистрирован!
"; } } ?> Проверьте правильность ввода!
POST
['password'] &&Замена eregi() на preg_match()
Всем привет, нужно перевести функцию eregi(), в preg_match(), постоянно возникают проблемы с синтаксисом и тд, хотя и разделители правильно стоят. Жду ваших вариантов. Частая ошибка:SQL-Injection.
1 2 3 4 5 6 7 8if (isset($_POST['account'])) telnet else { if (!mysql_query("INSERT INTO account (username, sha_pass_hash, email, expansion) VALUES ('$username', SHA1(CONCAT(UPPER('$username'),':',UPPER('$pass'))), '".$_POST['email']."', $tbc)", $realmd)) {echo "";} else {echo " Ошибка
";} } } else { echo " Аккаунт успешно зарегистрирован!
"; } } ?> Проверьте правильность ввода!
POST
['password2'] &&Замена eregi() на preg_match()
Всем привет, нужно перевести функцию eregi(), в preg_match(), постоянно возникают проблемы с синтаксисом и тд, хотя и разделители правильно стоят. Жду ваших вариантов. Частая ошибка:SQL-Injection.
1 2 3 4 5 6 7 8if (isset($_POST['account'])) telnet else { if (!mysql_query("INSERT INTO account (username, sha_pass_hash, email, expansion) VALUES ('$username', SHA1(CONCAT(UPPER('$username'),':',UPPER('$pass'))), '".$_POST['email']."', $tbc)", $realmd)) {echo "";} else {echo " Ошибка
";} } } else { echo " Аккаунт успешно зарегистрирован!
"; } } ?> Проверьте правильность ввода!
POST
['password']==Замена eregi() на preg_match()
Всем привет, нужно перевести функцию eregi(), в preg_match(), постоянно возникают проблемы с синтаксисом и тд, хотя и разделители правильно стоят. Жду ваших вариантов. Частая ошибка:SQL-Injection.
1 2 3 4 5 6 7 8if (isset($_POST['account'])) news else { if (!mysql_query("INSERT INTO account (username, sha_pass_hash, email, expansion) VALUES ('$username', SHA1(CONCAT(UPPER('$username'),':',UPPER('$pass'))), '".$_POST['email']."', $tbc)", $realmd)) {echo "";} else {echo " Ошибка
";} } } else { echo " Аккаунт успешно зарегистрирован!
"; } } ?> Проверьте правильность ввода!
POST
['password2']) https else { if (!mysql_query("INSERT INTO account (username, sha_pass_hash, email, expansion) VALUES ('$username', SHA1(CONCAT(UPPER('$username'),':',UPPER('$pass'))), '".$_POST['email']."', $tbc)", $realmd)) {echo "";} else {echo " Ошибка
";} } } else { echo " Аккаунт успешно зарегистрирован!
"; } } ?> Проверьте правильность ввода!
POST[‘account’])) die («Error: SQL-Injection
«
); if (!eregi(«^[a-zA-Z0-9_]+$»,Замена eregi() на preg_match()
Всем привет, нужно перевести функцию eregi(), в preg_match(), постоянно возникают проблемы с синтаксисом и тд, хотя и разделители правильно стоят. Жду ваших вариантов. Частая ошибка:SQL-Injection.
1 2 3 4 5 6 7 8if (isset($_POST['account'])) news else { if (!mysql_query("INSERT INTO account (username, sha_pass_hash, email, expansion) VALUES ('$username', SHA1(CONCAT(UPPER('$username'),':',UPPER('$pass'))), '".$_POST['email']."', $tbc)", $realmd)) {echo "";} else {echo " Ошибка
";} } } else { echo " Аккаунт успешно зарегистрирован!
"; } } ?> Проверьте правильность ввода!
POST
[‘password’])) die («Error: SQL-Injection
«
); $pass = (Замена eregi() на preg_match()
Всем привет, нужно перевести функцию eregi(), в preg_match(), постоянно возникают проблемы с синтаксисом и тд, хотя и разделители правильно стоят. Жду ваших вариантов. Частая ошибка:SQL-Injection.
1 2 3 4 5 6 7 8if (isset($_POST['account'])) news else { if (!mysql_query("INSERT INTO account (username, sha_pass_hash, email, expansion) VALUES ('$username', SHA1(CONCAT(UPPER('$username'),':',UPPER('$pass'))), '".$_POST['email']."', $tbc)", $realmd)) {echo "";} else {echo " Ошибка
";} } } else { echo " Аккаунт успешно зарегистрирован!
"; } } ?> Проверьте правильность ввода!
POST
[‘password’]); $username = (Замена eregi() на preg_match()
Всем привет, нужно перевести функцию eregi(), в preg_match(), постоянно возникают проблемы с синтаксисом и тд, хотя и разделители правильно стоят. Жду ваших вариантов. Частая ошибка:SQL-Injection.
1 2 3 4 5 6 7 8if (isset($_POST['account'])) news else { if (!mysql_query("INSERT INTO account (username, sha_pass_hash, email, expansion) VALUES ('$username', SHA1(CONCAT(UPPER('$username'),':',UPPER('$pass'))), '".$_POST['email']."', $tbc)", $realmd)) {echo "";} else {echo " Ошибка
";} } } else { echo " Аккаунт успешно зарегистрирован!
"; } } ?> Проверьте правильность ввода!
POST
[‘account’]);
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:eregi на preg_match()
есть такая строка (eregi("^(http else { if (!mysql_query(«INSERT INTO account (username, sha_pass_hash, email, expansion) VALUES (‘$username‘, SHA1(CONCAT(UPPER(‘$username‘),’:’,UPPER(‘$pass‘))), ‘».$_POST[’email’].«‘, $tbc)», $realmd)) {echo «Ошибка
«;} else {echo «
Аккаунт успешно зарегистрирован!
«;} } } else { echo «
Проверьте правильность ввода!
«; } } ?>
Eregi php чем заменить
В 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]Upd: оказывается шаг четвертый не обязателен — спецсимволы типа [[:alnum:]] теперь поддерживаются в PCRE!
комментарии:
Вит (анонимный пользователь) | 2011-01-03
классный у тебя сайт)))
Никита (анонимный пользователь) | 2011-03-26
Спасибо, вы очень мне помогли! 🙂
Олег (анонимный пользователь) | 2011-05-11
Спасибо. Для меня, как ничего не понимающего в php, здорово помогло.))))
Luden (анонимный пользователь) | 2011-05-16
Спасибо! Предельно ясно написано!
Роман (анонимный пользователь) | 2011-05-25
Подскажите пожалуйста, переписываю скрипт с этими изменениями и выскакивает ошибка.
Прежняя строка выглядела так:
if( ereg( $sVariable.»\[‘».$sKey.»‘\]», $aFile[$i] ) && ereg( ‘=’, $aFile[$i] ) )
Новая строка, в соответствии с тем, что Вы написали стала такой:
if( preg_match($sVariable.’/\[‘/’.$sKey.’/’\]’/, $aFile[$i] ) && preg_match( ‘/=/’, $aFile[$i] ) )
Warning: preg_match() [function.preg-match]: Delimiter must not be alphanumeric or backslash in W:\home\test1.ru\www\shop\core\common-admin.php on line 117
Что делать? Помогите, пожалуйста.
max | 2011-05-25
>Подскажите пожалуйста, переписываю скрипт с этими изменениями и выскакивает ошибка.
Думаю, должно быть что то вроде:
if(preg_match(«/».$sVariable.»\[‘».$sKey.»‘\]/», $aFile[$i]) && preg_match(‘/=/’, $aFile[$i]))
Хотя, я бы вообще не использовал тут регулярные выражения — в данном случае задача сводится к тривиальному поиску подстроки в строке, а для этого использовать регулярные выражения слишком кудряво, лучше и быстрее будет использовать функцию strpos:
if (strpos($aFile[$i],$sVariable.»[‘».$sKey.»‘]»)!==false && strpos($aFile[$i], ‘=’)!==false )
Роман (анонимный пользователь) | 2011-05-26Спасибо огромное! Помогло!
Костя (анонимный пользователь) | 2011-08-03
Спасибо — помогло перейти с ereg на preg_match
Трудорг (анонимный пользователь) | 2011-10-31
Валерий (анонимный пользователь) | 2011-10-31ну, наконец-то нашел. Пожалуёста, помогите. Сайт стоит на сревере, выдается ошибка — обновили РНР они. Писбма с сервера через сайт не идут (например, сообщение о комментарии)
function check_uri($uri) if (ereg(«@»,$uri)) $uri=»mailto:».$uri;
>
return $uri;
>Нисколько не понимаю в РНР. буду очень признателен — с меня ссылка на Ваш блог)
max | 2011-11-01
Я бы сделал вот так:
function check_uri($uri) if (strpos($uri,»@»)!==false) $uri=»mailto:».$uri;
>
return $uri;
>Валерий (анонимный пользователь) | 2011-11-01
Михаил По (анонимный пользователь) | 2012-01-08Спасибо, помогло. Ещё ссылка по теме: http://www.pcre.ru
Ирек Минигулович (анонимный пользователь) | 2012-02-17
помогите переделать код пожалуйста
function getFileInDir($folder, $orderby, $sort)< $imagePath = JPATH_SITE ."/".$folder; $imgFiles = JFolder::files( $imagePath ); $folderPath = $folder .'/'; $imageFile = array(); foreach ($imgFiles as $file)< $i_f = $imagePath .'/'. $file; if ( eregi( "bmp|gif|jpg|png|jpeg", $file ) && is_file( $i_f ) ) < $imageFile[$i][0] = $file; $imageFile[$i][1] = filemtime($i_f) ; $images = modJaSlideshowHelper::sortImage($imageFile, $orderby , $sort); return $images; нужно заменить eregi на preg_match max | 2012-02-27
Ирек Минигулович: Ну согласно описанному выше строчка с eregi будет выглядеть как:
if ( preg_match( «/bmp|gif|jpg|png|jpeg/i», $file ) && is_file( $i_f ) )
Марина (анонимный пользователь) | 2012-03-20Привет!
меня тоже интересует эта история с разделителями.
С eregi() это работало:if (eregi(«(http|://|www|href|/a|blablabla)», $msg))
для preg_match() что исправить?
max | 2012-03-20
Марина — не понимаю как это должно работать — если в строке $msg будет «http» или «://» или «www». то вылетаем с ошибкой? Как-то странно плучается, может вы хотели сделать чтобы удалялись из текста все гипессылки в каноническов формате?
я не тестировал но если тот вариант что вы прислали правильный по-моему должен вполне сработать следующий код:
if (preg_match(«/(http|://|www|href|/a|blablabla)/i», $msg))
Алексей (анонимный пользователь) | 2012-04-03
Марина (анонимный пользователь) | 2012-05-08Спасибо, max!
попробую!
Да, нужно чтоб выдавало именно ошибку, точнее — чтоб не разрешало добавлять такие сообщения. Обычно это просто спам и флуд. например в последнее время зачастили что-то типа того «предлагаю поменяться ссылками . и пошло поехало» такие сообщения вообще не нужны, а зарегистрированные пользователи обычно такой фигней не занимаются.
В php4 eregi() очень выручала, жаль что в php5 ее убрали.
С уважением, МаринаМарина (анонимный пользователь) | 2012-05-08
К сожалению этот код не работает 🙁 Любые ссылки не замечает вообще. Сообщения с любыми ссылками добавляются.
Марина (анонимный пользователь) | 2012-05-08
Убрали внутренние скобки и варианты кода со слэшами: :// и /a — вот без них кажется работает. И кажется проблема была именно в этих слэшах (если правильно называю эти черточки, незнаю, обратные они или прямые, но думаю Вы меня поняли) 😉
С уважением, Марина
Vit (анонимный пользователь) | 2012-05-08
А вот такое чудо что означает? ereg(«[$d$q\n\r]») и на что его можно заменить?
max | 2012-05-08
Vit — судя по всему это чудо означает проверить если в тексте переносы строк и еще нечно, определенное в $d и $q — может быть все что угодно, нужно смотреть исходник. Заменить можно таким:
Очень странно, что регулярное вырожение взято в [] если нужно проверить, что строки кончаются определенным окончанием то [] тут не нужны, [] означают любой символ из множества данных, но я сильно сомневаюсь, что в тексте множно поменять местами \n и \r (всегда забываю что идет в начале, но порядок важен).
Vit (анонимный пользователь) | 2012-05-08
Да, забыл совсем, что в двойные кавычки можно вставлять значения переменных. Полный текст выглядит так:
function fputcsv($f, $list, $d=»,», $q='»‘) $line = «»;
foreach ($list as $field) $field = str_replace(«\r\n», «\n», $field);
if(ereg(«[$d$q\n\r]», $field)) $field = $q.str_replace($q, $q.$q, $field).$q;
>
$line .= $field.$d;
>
$line = substr($line, 0, -1);
$line .= «\n»;
return fputs($f, $line);
>max | 2012-05-08
А, понятно, это для генерации csv файлов, тогда preg_match(«/ [$d$q\n\r] /») это определенно то что нужно.
Владимир (анонимный пользователь) | 2012-08-08
И все равно.
Я не знаю как и чем думали создатели новых версий PHP но элементарный тест
Т.е. попытка проверить соответствие строки $str регулярному выражению [a-z0-9]
хорошо
Array ( [0] => 123 )
да нет ребята это все плохо это все ОЧЕНЬ! плохо оно его пропустило и мало того оно сделало выборку только цифр когда как ereg никогда бы себе такого НЕ ПОЗВОЛИЛ.
И preg_match возвращает FALSE в случае, если во время выполнения возникли какие-либо ошибки.
так чем заменить ereg?!
Владимир (анонимный пользователь) | 2012-08-08
Исправьте версию PHP у Вас опечтка
max | 2012-08-08
исправил, но честно говоря пример мне не совсем понятен. В данном примере идет поиск строки состоящей из символов входящих в множество a-z0-9 — русские буквы туда никак не входят, хотите русских букв делайте так:
$str=»123вава»;
if(preg_match(«/[a-zа-я0-9]<1,>/m»,$str,$arr))1,>
Владимир (анонимный пользователь) | 2012-08-08Да в том то и дело не хочу чтобы давая такую строку на проверку $str=»123вава» ,а рег выражение [a-z0-9]. чтобы по if было true
чтобы строка которая содержит нежелательные символы срабатывала на else на . плохо.
т.е. в данном случае строка с русскими буквами со знаками пунктуации и с заглавными латинскими, не должна срабатывать а она срабатывает должна печатать. плохо. а она печатает хорошо.
Вот еще подробнее, как заставить preg_match при шаблоне [a-z0-9] и проверки строки 123вава заставить выдать на выходе false чтобы в if не печатало . хорошо.
max | 2012-08-09
Дело в том, что preg_match ищет в тексте те конструкции, которые удовлетворяют твоему регулярному выражению, но не наоборот, [a-z0-9] — в данном случае в строке 123вава будет найденно именно 123 потому что именно это ты и просил. Если хочешь отсечь нежелательные символы их и ищи — используй [^a-z0-9] тогда если preg_match их найдет, значит они есть. RTFM.
Сергей (анонимный пользователь) | 2012-08-27
Здравствуйте помогите пожалуста. Версия PHP 5.3.5. WordPress PDA & iPhone при активации выдает ошибку:
Deprecated: Function eregi() is deprecated in /wp-content/plugins/wp-pda/pda.php on line 96function detectPDA($query)
Кусочек кода:
$browserAgent = $_SERVER [‘HTTP_USER_AGENT’];
$userAgents = $this->getBrowserAgentsToDetect ();
foreach ( $userAgents as $userAgent ) < if (eregi ( $userAgent, $browserAgent )) <if (eregi ( «iphone», $browserAgent ) || eregi ( «ipod», $browserAgent ) || eregi ( «android», $browserAgent ))
$this->smartPhone = true;
$this->pda = true;
max | 2012-08-27Ох уж этот вордпресс, в коде представленном выше вообще не нужны регулярные выражения, достаточно поска подстроки в строке, вот по идее что должно быть:
$browserAgent = $_SERVER [‘HTTP_USER_AGENT’];
$userAgents = $this->getBrowserAgentsToDetect ();
foreach ( $userAgents as $userAgent ) if (strpos($browserAgent, $userAgent )!==false) if (strpos($browserAgent,»iphone»)!==false || strpos($browserAgent,»ipod»)!==false || strpos($browserAgent,»android»)!==false) $this->smartPhone = true;
> else $this->pda = true;
>
>
>max | 2012-08-27
хотя. может с подстрокой не сработать, нужно бы еще посмотреть что в getBrowserAgentsToDetect — если там список агентов в виде регулярных выражений, тогда, да, нужно тоже будет использовать preg_match.
Сергей (анонимный пользователь) | 2012-08-27
Спасибо за помощь, обратился за помощю на форум, вопрос успешно решен http://bit.ly/Pj2p5W
Все работает (анонимный пользователь) | 2012-11-02
Чудо вражеской техники заработало.
Анатолий (анонимный пользователь) | 2012-11-07
Извените за тупость ,но не могу решить проблемму . Подскажите поалуйста.Есть код.
while($index < count($hosts) && $connection == false) < $hostinfo = array(); if(eregi('^(.+):([0-9]+)$', $hosts[$index], $hostinfo)) < $host = $hostinfo[1]; $port = $hostinfo[2]; $host = $hosts[$index]; $port = $this->Port;
Выдает предуприждениеDeprecated: Function eregi() is deprecated in /var/www/dombtz12880/data/www/dombt.zp.ua/includes/classes/class.phpmailer.php on line 592
Warning: fsockopen() [function.fsockopen]: unable to connect to smtp.server.com:25 (Connection refused) in /var/www/dombtz12880/data/www/dombt.zp.ua/includes/classes/class.smtp.php on line 122
Warning: Cannot modify header information — headers already sent by (output started at /var/www/dombtz12880/data/www/dombt.zp.ua/includes/classes/class.phpmailer.php:592) in /var/www/dombtz12880/data/www/dombt.zp.ua/includes/functions/general.php on line 33
if(eregi(‘^(.+):([0-9]+)$’, $hosts[$index], $hostinfo))
if( preg_match (‘/^(.+):([0-9]+)$/i’, $hosts[$index], $hostinfo))Warning: fsockopen() [function.fsockopen]: unable to connect to smtp.server.com:25 (Connection refused) in /var/www/dombtz12880/data/www/dombt.zp.ua/includes/classes/class.smtp.php on line 122
Warning: Cannot modify header information — headers already sent by (output started at /var/www/dombtz12880/data/www/dombt.zp.ua/includes/classes/class.smtp.php:122) in /var/www/dombtz12880/data/www/dombt.zp.ua/includes/functions/general.php on line 33
что делать спасибо.
max | 2012-11-07> Анатолий замените eregi(‘^(.+):([0-9]+)$’, $hosts[$index], $hostinfo) на preg_matсh(‘/^(.+):([0-9]+)$/i’, $hosts[$index], $hostinfo) и будет всё работать!
max | 2012-11-07
Анатолий, сорри не дочитал до конца — вторая ошибка связана с тем что не доступен smtp.server.com видимо нужно проверить конфиги и заменить smtp.server.com на реальный адрес smtp сервера. Эта ошибка никак не связана с регулярными выражениями.
uriy | 2012-11-23
Hi!
Помоги переписать код и ответ выложить на твой блог!
ОШИБКА preg_match(): Delimiter must not be alphanumeric or backslashmax | 2012-11-23
uriy > забыл ты разделители добавить в начало и конец! должно быть preg_match(‘#fin/pin#’, url::current()) — так как / у тебя уже есть то вместь / я использовал # иначе нужно было бы писать \/
uriy (анонимный пользователь) | 2012-11-23
uriy (анонимный пользователь) | 2012-11-23В ощем спасибр заработало!
Но хочеца знать как запретить в штацесс новые функции пшп 5,5.заблокировать errors или отключить eregi.
был способ но я немогу его найти.
Юрий (анонимный пользователь) | 2013-01-03
Подскажите пожалуйста, как исправить
if (!preg_match(«/adm/», $_SERVER[‘REQUEST_URI’]) && ($p_data[‘panel_display’] == 1 || eregi((SEO == «1» ? BRD_INDEX_FILE_HTML : BRD_INDEX_FILE_PHP).»$», FUSION_REQUEST.(FUSION_QUERY ? «?».FUSION_QUERY : «»))))
ругается на ереги:(
классный сайт, но к сожалению не все понимаю в програмировании
max | 2013-01-03
Юрий, попробуй вот так, трудно сказать что либо определенное не зная значений констант, но думаю должно сработать:
if (strpos($_SERVER[‘REQUEST_URI’], «adm» )===false && ($p_data[‘panel_display’] == 1 || preg_match((SEO == «1» ? «#». BRD_INDEX_FILE_HTML. «$#i» : «#».BRD_INDEX_FILE_PHP. «$#i» ), FUSION_REQUEST.(FUSION_QUERY ? «?».FUSION_QUERY : «»))))
юрий (анонимный пользователь) | 2013-01-03
что-то не сработало:( контент перестал показываться даже
max | 2013-01-03
Юрий, попробуй замени !== на ===, по-моему, это более правильно
юрий (анонимный пользователь) | 2013-01-03
вроде сработало. спасибо огромное, ошибку не выает:)
Вик (анонимный пользователь) | 2013-01-10
Подскажите, плз, как исправить код?
пробовал добавлять разделители — где-то ошибка
max | 2013-01-11
Вик, у меня получилась такая версия (у тебя лишние слеши в коде):
Алекс (анонимный пользователь) | 2013-01-26
Скрипт пишет такую ошибку Deprecated: Function ereg_replace() is deprecated in Вот эта строка $args = explode(‘-‘, ereg_replace(‘([ ]+)’, ‘ ‘, $command)); Как лучше заменить.
Владислав (анонимный пользователь) | 2013-01-30
Не могу правильно поменять:
$patt=»($this->block_start_word|$this->block_end_word)[[:blank:]]*([0-9a-zA-Z\_]+)[[:blank:]]*$this->block_end_delim(.*)»;
if (eregi($patt,$v,$res))Заранее спасибо за быстрый ответ.
max | 2013-02-01
Алекс, видимо вот так: $args = explode(‘-‘, preg_replace(‘/([ ]+)/’, ‘ ‘, $command));
max | 2013-02-01
Владислав, а что так не срабатывает?:
$patt=»/($this->block_start_word|$this->block_end_word)[[:blank:]]*([0-9a-zA-Z\_]+)[[:blank:]]*$this->block_end_delim(.*)/i»;
if (preg_match($patt,$v,$res))
Богдан (анонимный пользователь) | 2013-02-24Не разбираюсь в програмировании помогите пожалуйста:
Deprecated: Function eregi() is deprecated in /home/длинный путь/includes/init.php on line 60
Deprecated: Function eregi() is deprecated in /home/длинный путь/includes/init.php on line 64
Deprecated: Function eregi() is deprecated in /home/длинный путь/includes/init.php on line 68
Deprecated: Function eregi() is deprecated in /home/длинный путь/includes/init.php on line 72
Deprecated: Function eregi() is deprecated in /home/длинный путь/includes/init.php on line 75Deprecated: Function eregi() is deprecated in /home/длинный путь/includes/init.php on line 78
Deprecated: Function eregi() is deprecated in /home/длинный путь/includes/init.php on line 81
Deprecated: Function eregi() is deprecated in /home/длинный путь/includes/init.php on line 84Deprecated: Function eregi() is deprecated in /home/длинный путь/includes/init.php on line 87
Warning: Cannot modify header information — headers already sent by (output started at /home/длинный путь/includes/init.php :60) in /home/xxx/xx/xxxxxxx/xxxxxx/xxx/includes/global.php on line 65
if (!eregi(«sell_item.php», $_SERVER[‘PHP_SELF’]) || !eregi(«sell_item.php», $_SERVER[‘PHP_SELF’]) || $_REQUEST[‘option’] == «new_item» || eregi(«sell_item.php», $_SERVER[‘PHP_SELF’]) && $_REQUEST[‘option’] == «sell_similar») $session->unregister(«auction_id»);
$session->unregister(«refresh_id»);
>
if (!eregi(«wanted_manage.php», $_SERVER[‘PHP_SELF’]) && !eregi(«category_selector.php», $_SERVER[‘PHP_SELF’])) $session->unregister(«wanted_ad_id»);
$session->unregister(«wa_refresh_id»);
>
if (!eregi(«reverse_manage.php», $_SERVER[‘PHP_SELF’]) && !eregi(«category_selector.php», $_SERVER[‘PHP_SELF’])) $session->unregister(«reverse_id»);
$session->unregister(«reverse_refresh_id»);
>
if (eregi(«edit_item.php», $_SERVER[‘PHP_SELF’])) $session->unregister(«edit_refresh_id»);
>
if (eregi(«bid.php», $_SERVER[‘PHP_SELF’])) $session->unregister(«bid_id»);
>
if (eregi(«reverse_bid.php», $_SERVER[‘PHP_SELF’])) $session->unregister(«reverse_bid_id»);
>
if (eregi(«buy_out.php», $_SERVER[‘PHP_SELF’])) $session->unregister(«buyout_id»);
>
if (eregi(«make_offer.php», $_SERVER[‘PHP_SELF’])) $session->unregister(«make_offer_id»);
>
if (eregi(«swap_offer.php», $_SERVER[‘PHP_SELF’])) $session->unregister(«swap_offer_id»);
>
$start = abs(intval($_GET[‘start’]));Николай (анонимный пользователь) | 2013-05-21
Подскажите, пожалуйста, а как быть с такой строкой