ereg()

Печать RSS
254

В
Автор
Пришелец
0
Как в функции ereg() указать как разрешенный символ переход на новую строку?
пример: if (ereg("^[0-9A-Za-zА-Яа-я\ \.\/\:\;\?\@\=\№\,\!\+\*\(\)\-]{1,255}$", $var)) { }
Сюда надо добавить символ перехода на новую строку..
В
Автор
Пришелец
0
да и еще вопрос сразу, кто знает как добавить кол-во символов потому как 255 для нее максимальное?
В
Автор
Пришелец
0
все тема не актуальна. решил другим путем, можно закрывать
С

Малиновые штаны
0
Лучше ерег не юзать.

Голубые штаны
0
sanzstez, почему? иногда бывает очень полезно...

2000 лет д.н.э.
0
Лучше preg_match()
С

Малиновые штаны
0
5. LondoN_tm,ну никто не говорит что ерег не полезная ф-ция,но как и сказал Рамзес лучшей альтернативой ereg-y является preg_match()
Изменил: Саня (02.02.2010 / 01:27)
А

Оранжевые штаны
0
Немного счета:
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 ;)
Пересчитаю на всякий случай smile :
6*(15/2) ~ 45 итераций на слово.
(5+9)/2*45 ~ 315 итераций на предложение.
Выигрышь: 1 - 315/2982 ~ 90%
Математику в народ!
Изменил: Артур (02.02.2010 / 02:00)

2000 лет д.н.э.
0
А не проще с таким вариантом strtr() вырезать лишнее? , а еще лучше все пропускать ибо итак почти все пропущеноsmile только отфильтровать да и все.
А

Оранжевые штаны
0
Ну все функции работают по принципу нахождения символа в проходе, так что итераций не избежать. Можно попробовать на более низком уровне просчитывая номера кода в 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%
Изменил: Артур (02.02.2010 / 02:43)
Стикеры / Теги / Правила / Топ тем / Топ постов / Поиск