![]() |
|
Модераторы: Aliance, skyboy, MoLeX, ksnk |
![]()
|
|
| Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 16 Всего: 261 |
Плохое решение. ЛУчше 1 раз пройтись большой регуляркой, чем много маленькими.
Хотя и не всегда. Да и замудренно как-то это. Плюс, модификатор e сильно кушает память и может вызвать неприятности. Плюс, помним, что ьез установки локали RegEX не будет работать с кирилицей в паттерне.
|
|||
|
||||
| GiV |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 137 Регистрация: 13.7.2006 Где: rus|53 Репутация: 2 Всего: 9 |
не всегда, хотя в данном случае правда Ваша. preg_replace с модификатором e работает медленне replace_callback + мы всегда будем проходить все n итерации (n-количество элементов в массиве для замены), что в худшем случае (ни одного вхождения искомого ключа в строку) все n раз заставит сработать preg_replace в холостую. В то время как большой прег выполнится только ОДИН раз, там выигрыши получаются от 2-х мс... И [\s.-=;] все же не все элементы включены (таб, запятая, восклицательный знак, двоеточие и т.д.), класс [^А-Яа-яA-Za-z] все же лучше. P.S. при достижении 100 с меня +. Это сообщение отредактировал(а) GiV - 31.7.2006, 16:27 |
|||
|
||||
| Gold Dragon |
|
|||
![]() Призрачный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6753 Регистрация: 1.3.2004 Где: Россия, Тамбов Репутация: 1 Всего: 71 |
Наверное я слишком многое хочу
Mal Hack, не все условия выполняются: замена происходит только если в начале стоит цифра, пробелы или точки, остальные не меняются... Т.е. ещё нужны условия: граничит с восклицательным знаком, когда слово идёт сначала, когда заканчивается на цифру (или скорее всего не на букву) -------------------- Нельзя жить в прошлом, оно уже прошло. Нельзя жить в будущем, оно ещё не наступило. Нужно жить в настоящем, помня прошлое и думая о будущем! |
|||
|
||||
| Mal Hack |
|
||||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 16 Всего: 261 |
Причем далеко не всегда. И сильно зависит от многих факторов. В свое время пришлось на этом деле @ схомячить. Использование модификатора "e" очень частая ошибка многих пхпшников, которые наивно думают, что чем код короче, тем он быстрее "e"незаменим, когда надо в заменяющую функцию передать НЕСКОЛЬКО параметров, часть из которых не из карманов. При работе с BB кодами e незаменим. Там уж никак.
Тут есть два момента. Первый - кирилица. Бывает глюит, надо локаль включать обязательно через set_locate(). Второй момент, все-таки помнтся мне, что был квантофикатор \b или \B, \W тут не подойдет. И еще. [^А-Яа-яA-Za-z] все-таки большое-колво символов, а перечислив спецсимволы, как это сделал я, мы по логике получим в паттерне меньшее число проверок при компиляции, т.е. как мне кажется, указать все нужные спецсиволы будет лучше. |
||||
|
|||||
| GiV |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 137 Регистрация: 13.7.2006 Где: rus|53 Репутация: 2 Всего: 9 |
Границы слова. Они тоже зависят от локали, так как определение идет фактически на таких раздельных регулярках ^\w, \w$, \w\W, \W\w, а \w и \W включают различные наборы символов (коды символов не только до 128, но и больше) Ну в детали внутренней работы PCRE не вникал, так что пытаться что-либо доказать не буду. Я там не был, врать не стану. Можно попробовать попрофилировать код разных регулярок на одном и том же тектовом наборе, хотя это все частные случаи. |
|||
|
||||
| Gold Dragon |
|
||||||||
![]() Призрачный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6753 Регистрация: 1.3.2004 Где: Россия, Тамбов Репутация: 1 Всего: 71 |
так.. вопрос опять всплыл, но сейчас чуть всё проще, нужно тупо заменять слова. Просто не хочу сильно вымудряться. В общем есть массив со словами
обработка простая
но как мне сделать чтоб слова сравнивались без учёта регистра, чтоб не писать
я пытался сделать
Что подскажите? Это сообщение отредактировал(а) Gold Dragon - 24.4.2007, 12:38 -------------------- Нельзя жить в прошлом, оно уже прошло. Нельзя жить в будущем, оно ещё не наступило. Нужно жить в настоящем, помня прошлое и думая о будущем! |
||||||||
|
|||||||||
| xolod |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 148 Регистрация: 24.5.2005 Где: Когда: Что: Репутация: 3 Всего: 13 |
|
|||
|
||||
| Gold Dragon |
|
|||
![]() Призрачный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6753 Регистрация: 1.3.2004 Где: Россия, Тамбов Репутация: 1 Всего: 71 |
О как??? А я и не знал....
А синтаксис у неё такой же? -------------------- Нельзя жить в прошлом, оно уже прошло. Нельзя жить в будущем, оно ещё не наступило. Нужно жить в настоящем, помня прошлое и думая о будущем! |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Тексты | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |