ereg()
1.
Владимир (01.02.2010 / 13:52)
Как в функции ereg() указать как разрешенный символ переход на новую строку?
пример: if (ereg("^[0-9A-Za-zА-Яа-я\ \.\/\:\;\?\@\=\№\,\!\+\*\(\)\-]{1,255}$", $var)) { }
Сюда надо добавить символ перехода на новую строку..
2.
Владимир (01.02.2010 / 13:54)
да и еще вопрос сразу, кто знает как добавить кол-во символов потому как 255 для нее максимальное?
3.
Владимир (01.02.2010 / 20:02)
все тема не актуальна. решил другим путем, можно закрывать
4.
Саня (01.02.2010 / 20:21)
Лучше ерег не юзать.
5.
Дмитрий (01.02.2010 / 23:32)
sanzstez, почему? иногда бывает очень полезно...
6.
ramzes (02.02.2010 / 00:06)
Лучше preg_match()
7.
Саня (02.02.2010 / 01:24)
5.
LondoN_tm,ну никто не говорит что ерег не полезная ф-ция,но как и сказал Рамзес лучшей альтернативой ereg-y является preg_match()
8.
Артур (02.02.2010 / 01:54)
Немного счета:
0-9 - 10 символов
A-Za-z - 52 символа
А-Яа-я - 64 символа
./:;?@=№,!+*()- - 16 символов
Итого: 10 + 52 + 64 + 16 = 142 символа.
Предположим слово состоит из одного символа "-" сколько понадобится функции итераций для просмотра? Правильно, 142!
Представим слово в 6 символов. Вероятность выподения каждого символа одинакова, то есть около 6*(142/2) ~ 426 итераций в среднем на одно слово.
Предложение содержит около 5-9 слов, (5+9)/2 * 426 ~ 2982 итерации.
Мощно и не рационально, лучше искать те символы, которых быть не должно, их всего то остается около 15 ;)
Пересчитаю на всякий случай
:
6*(15/2) ~ 45 итераций на слово.
(5+9)/2*45 ~ 315 итераций на предложение.
Выигрышь: 1 - 315/2982 ~
90%
Математику в народ!
9.
ramzes (02.02.2010 / 02:23)
А не проще с таким вариантом strtr() вырезать лишнее? , а еще лучше все пропускать ибо итак почти все пропущено
только отфильтровать да и все.
10.
Артур (02.02.2010 / 02:37)
Ну все функции работают по принципу нахождения символа в проходе, так что итераций не избежать. Можно попробовать на более низком уровне просчитывая номера кода в ASCII.
Пропущены у автора символы: ~`#$%^&"'}{[]_
А это следующие коды: 34 35 36 37 38 39 91 93 94 95 96 123 125 126
Можем свернуть все в несколько небольших условий:
if(($char>=34 && $char<=39)||($char==91)||($char>= 93 && $char<=96)||($char==123)||($char>=125 && $char<=126)){
$char = "";
}
Всего то 5 условий на один символ вместо 14 символов которые были бы в условии в обратном случае.
Теперь выигрышь уже ~
96%
11.
ramzes (02.02.2010 / 02:51)
Bashka, +1, спасибо за инфу))
12.
Артур (02.02.2010 / 02:55)
Да незачто. Несколько лет на C++ и работа с "Массивом символов" доведут до таких вот подсчетов любого
Но зато оптимизация проблем не составит.
Кстати книжка есть хорошая по регуляркам, очень полезная, может ссылку дать?
13.
ramzes (02.02.2010 / 02:58)
Давай, если она в тхт)) я с мобилы, а регулярки больное место
14.
Саня (02.02.2010 / 03:00)
Да.дофай . Регулярки - слабое место.
15.
Артур (02.02.2010 / 03:02)
Нее, она в DJVU весом в 9 метров.
Оглавление:
1. Знакомство с регулярными выражениями 24
Решение реальных задач 25
Регулярные выражения как язык 27
Аналогия с файловыми шаблонами 27
Аналогия с языками 28
Регулярные выражения как особый склад ума 29
Для читателей, имеющих опыт работы
с регулярными выражениями 29
Поиск в текстовых файлах: egrep 30
Метасимволы egrep 31
Начало и конец строки 32
Символьные классы 32
Один произвольный символ 35
Выбор 37
Игнорирование различий в регистре символов 39
Границы слов 39
В двух словах 40
Необязательные элементы 42
Другие квантификаторы: повторение 43
Круглые скобки и обратные ссылки 45
Экранирование 47
Новые горизонты 48
Языковая диверсификация 48
Смысл регулярного выражения 49
Дополнительные примеры 49
Терминология регулярных выражений 52
Пути к совершенствованию 56
Итоги 58
Личные заметки 59
2. Дополнительные примеры 61
О примерах 62
8 Оглавление
Краткий курс Perl 63
Поиск по регулярному выражению 64
Переходим к реальным примерам 66
Побочные эффекты успешных совпадений 67
16.
Артур (02.02.2010 / 03:04)
Всего 570 стр.
Ну думаю понятно о чем книга, большой упор на оптимизацию регулярок сделан. Сейчас посмотрю ссылку в нете.
17.
Артур (02.02.2010 / 03:06)
http://knigaluby.ru/programmirovanie/other/1894-reguljarnye-vyrazhenija.html
Всем советую. Отличная книга!
18.
Артур (02.02.2010 / 03:12)
Перекодировал в txt, щас скину.
RAR телефон откроет?
19.
Артур (02.02.2010 / 03:16)
http://upload.com.ua/get/901356912/
^ проблематичный обменник какой то. Не посоветуете обменник под мобильники, чтоб скачать было по проще?
20.
ramzes (02.02.2010 / 03:20)
Upwap.ru если память не изменяет
за тхт спасибо
в рар нормально
21.
Артур (02.02.2010 / 03:22)
Не хочет upwap открываться паганец! Ошибка там у него какая то. Может на почту кинуть?
Вес архива: 314 КБайт
Вес файла: 2,18 МБайт
22.
ramzes (02.02.2010 / 03:26)
С #19 с тела фиг скачаешь
ява скриптом отдает.
// ну уж по теме имею такой вопрос
if(preg_match('/(linux)|(windows)/',$str,$match)){
if(preg_match('/linux/',$str,$match) or preg_match('/windows/',$str,$match)){
есть выгода по скорости в первом варианте против второго, или одинаково?
(это просто пример, так что речь о том что регулярка тут не нужна не идет)
23.
Артур (02.02.2010 / 03:32)
22.
ramzes, честно говоря даже не знаю как там работает уловие регулярок по сравнению с условиями пыха, но думаю разница не большая.
Единственное что смущает: в первом случае проход примерно такой - символ == l ищем linux, символ == w ищем windows
а во втором лучае сначало во всем предложении ищем linux затем windows.
А вдруг первым словом будет windows? Тогда первый способ найдет бытрее. Так что я за него.
24.
ramzes (02.02.2010 / 03:36)
Вот я тоже подумал что при первом вхождении проверка закончится, и решил таким макаром делать
URL:
https://visavi.net/topics/5614