А вот как реализовать подобное с помощью обычных функций для работы со строками.
Спустя 17 минут, 43 секунды (7.03.2009 - 16:22) twin написал(а):
Ну во первых ([A-ZА-ЯЁ]+), а во вторых, интересно зачем? Теоретически можно конечно, допустим разбить на символы и проверить принадлежность к массиву... Только регуляркой проще все это...
Спустя 8 минут, 5 секунд (7.03.2009 - 16:30) silent_zzz написал(а):
twin, спасибо что поправил
А это затем что быстрей работало, как известно регулярки не очень быстро работают, к примеру если текста очень много.
И по твоей теории, не ясно что будет это за массив? С которым сравниваются символы?
![tongue.gif](http://phpforum.ru/html/emoticons/tongue.gif)
А это затем что быстрей работало, как известно регулярки не очень быстро работают, к примеру если текста очень много.
И по твоей теории, не ясно что будет это за массив? С которым сравниваются символы?
Спустя 2 минуты, 56 секунд (7.03.2009 - 16:33) vasa_c написал(а):
Кто сказал, что не очень быстро?
Спустя 3 минуты, 41 секунда (7.03.2009 - 16:37) twin написал(а):
Совсем не факт, что будет быстрее работать набор функций, заменяющих штатные... Массив из букв, которые нужны, а именно A-ZА-Я. Я чесно говоря вообще задачи не понял... Нужно просто узнать, есть ли в тексте верхний регистр или что то с этим текстом сделать?
Спустя 6 минут, 35 секунд (7.03.2009 - 16:43) silent_zzz написал(а):
vasa_c, а если взять к примеру какой нить substr и preg_match кто будет быстрей работать?
twin, задача собственно в том чтобы узнать есть ли слова в верхнем регистре и все.
twin, задача собственно в том чтобы узнать есть ли слова в верхнем регистре и все.
Спустя 1 минута, 26 секунд (7.03.2009 - 16:45) vasa_c написал(а):
И кто будет работать быстрее? На каком примере? На какой системе? Какие тесты были проведены?
Спустя 4 минуты, 21 секунда (7.03.2009 - 16:49) silent_zzz написал(а):
vasa_c, ну тестов не проводил, но так сложилось в моем сознании при общении с более опытными программерами, что обычные строковые функции работают быстрей регулярок..
Спустя 3 минуты, 16 секунд (7.03.2009 - 16:52) vasa_c написал(а):
Вот то что складывается просто так в сознании и не подтверждается экспериментами, это самое вредное в программировании.
А "опытные программисты" пишут уйму статей по поводу того, что не используйте двойные кавычки, одинарные, дескать, быстрее.
А потом люди насилуют себе мозг оптимизацией микросекундных операций, при этом узнавая размер мегабайтных таблиц с помощью mysql_num_rows(mysql_query('SELECT * FROM `table`')).
Забейте вы на это и используйте то, что удобно. Зачем оптимизировать начали? Регулярка в вашем случае тормозить начала?
А "опытные программисты" пишут уйму статей по поводу того, что не используйте двойные кавычки, одинарные, дескать, быстрее.
А потом люди насилуют себе мозг оптимизацией микросекундных операций, при этом узнавая размер мегабайтных таблиц с помощью mysql_num_rows(mysql_query('SELECT * FROM `table`')).
Забейте вы на это и используйте то, что удобно. Зачем оптимизировать начали? Регулярка в вашем случае тормозить начала?
Спустя 10 минут, 29 секунд (7.03.2009 - 17:03) silent_zzz написал(а):
vasa_c, спасибо обязательно это учту для себя, но я пишу не для себя, и поэтому и хочеться написать что то более лучшее(что бы не доматывались)
На новой работе руководитель очень тщательно просматривает код и говорит что не так и что не правильно, так как система высоко нагрузочная.
Вот не давно я к примеру предложил такое решение задачи
На новой работе руководитель очень тщательно просматривает код и говорит что не так и что не правильно, так как система высоко нагрузочная.
Вот не давно я к примеру предложил такое решение задачи
PHP |
foreach($words_arr as $k=>$v){ |
где $words_arr обычный ассоциативный массив, задача состояла в том чтобы определить наименьшее значение у ключа.
Мне сказали что это полная херь и сделать надо так
PHP |
$min=-1; |
Вот исходя из этого и хотелось бы решать задачи какими то и другими вариантами..
Спустя 16 минут, 50 секунд (7.03.2009 - 17:20) vasa_c написал(а):
Единственное, что я понял в этом примере, это то, что обычный перебор массива здесь заменён на вытаскивание всех его ключей в другой массив и перебор уже их. Ваш директор объяснил смысл данной оптимизации?
А после данной оптимизации вы провели замеры времени?
А после данной оптимизации вы провели замеры времени?
Спустя 1 минута, 57 секунд (7.03.2009 - 17:22) sergeiss написал(а):
Ну, насчет "микрооптимизации" уже сказали ![smile.gif](http://phpforum.ru/html/emoticons/smile.gif)
![smile.gif](http://phpforum.ru/html/emoticons/smile.gif)
Цитата (silent_zzz @ 7.03.2009 - 17:03) | ||
Мне сказали что это полная херь и сделать надо так
Вот исходя из этого и хотелось бы решать задачи какими то и другими вариантами.. |
А вот это я вообще не понял
![smile.gif](http://phpforum.ru/html/emoticons/smile.gif)
Чем не нравится вот так - всё действие в одну строку:
PHP |
$min=min( array_keys( $words_arr) ); |
PS. А при сравнении регулярок и символьных функций учти, что чем больше у тебя действий в ПХП, тем медленнее будет их выполнение. Потому что ПХП интерпретирует строки во время выполнения, а не заранее. Если начнешь работать с символьными строками, то будешь много "кодить" в ПХП. И вот тут можешь только потерять много.
Функции же работы с регулярками взяли параметры и работают - а внутри они состоят из скомпилированного кода, который заведомо быстрее, чем интерпретируемый.
Спустя 2 минуты, 4 секунды (7.03.2009 - 17:24) twin написал(а):
Если просто узнать, то так можно:
PHP |
<? |
Спустя 4 минуты, 17 секунд (7.03.2009 - 17:28) silent_zzz написал(а):
vasa_c, померить хотел, но мне сразу же была поручена следующая задача, и во вторых я не сразу понял что он написал) Объяснил не очень внятно но по его выражению и эмоциям было ясно что это не что более крутое намного, и работать будет быстрее, так как я у себя постонянно обращаюсь к $text где собственно ищу количество совпадений в тексте.
Спустя 2 часа, 22 минуты, 9 секунд (7.03.2009 - 19:50) SpiderSpy написал(а):
я как то писал функцию, которая достает из текста слова которые удволетворяет, определнному условию, и я б сказал что куда дольше работает, чем регулярка.
Спустя 17 часов, 6 минут, 21 секунда (8.03.2009 - 12:56) silent_zzz написал(а):
а вот такой вопрос еще в связи с тем, что preg_replace пользовался один раз всего и то давно, подскажите как в массиве заменять полностью слово которое нашли а не только его вхождение к примеру ищем ну так же буквы с верхним регистром и удаляем их, вот если писать так
PHP |
preg_replace('/([A-ZА-ЯЁ]{2,})/','',$text); |
и если ищем по массиву с такими данными
PHP |
$text = array( |
то он выдаст такое - "Привет ивет"
А надо чтобы ивет не выводил..
Спустя 1 час, 45 минут, 24 секунды (8.03.2009 - 14:42) twin написал(а):
Ну если только первые, то нужно просто указать, что еще и маленькие могут быть:
PHP |
<? |
Но это не сработает, если заглавная буква будет в конце или середине...
А чем мой вариант не угодил, вроде бы проще.
Спустя 53 минуты, 37 секунд (8.03.2009 - 15:35) silent_zzz написал(а):
twin, это который твой вариант?
вот этот?
вот этот?
PHP |
<? |
Просто у меня задача такая надо найти в массиве (состоит из предложений) слова где встречаются буквы в верхнем регистре и надо исключить такие предложения из массива...
Спустя 1 час, 47 минут, 32 секунды (8.03.2009 - 17:23) twin написал(а):
Ну вот так попробуй, правда на кирилице проверить не смог, к меня все на utf-8 настроено, а она чёт не хочет с многобайтными под utf работать...
PHP |
<? |
Спустя 30 минут, 35 секунд (8.03.2009 - 17:54) silent_zzz написал(а):
Да работает! Круто!
А можно ли сделать чтобы функция брала только слова где идут от двух подряд буквы в верхнем регистре, а не от одной?
А можно ли сделать чтобы функция брала только слова где идут от двух подряд буквы в верхнем регистре, а не от одной?
Спустя 6 минут, 24 секунды (8.03.2009 - 18:00) twin написал(а):
Сегодня банкет, завтра попробуем
![smile.gif](http://phpforum.ru/html/emoticons/smile.gif)
Спустя 2 минуты, 24 секунды (8.03.2009 - 18:02) silent_zzz написал(а):
думаю завтра ты не в состоянии будешь
![tongue.gif](http://phpforum.ru/html/emoticons/tongue.gif)
Спустя 30 минут, 47 секунд (8.03.2009 - 18:33) twin написал(а):
Не, я пью мало, да и банкет чисто семейный. Мож еще седня сделаю. Только ты бы обрисовал задачу целиком, а то я делаю то, чего тебе и не надо совсем.
Спустя 12 часов, 20 минут, 5 секунд (9.03.2009 - 06:53) twin написал(а):
Вот смотри, условия так и не ясны. Во первых, не понятно:
1. проверяемая строка состоит из одного слова или из нескольких
2. в верхнем регистре разрешены только первые символы или по одному на любой позиции
Если слово одно и можно только первые, то совсем просто. Перед проверкой удаляем первый символ и все:
1. проверяемая строка состоит из одного слова или из нескольких
2. в верхнем регистре разрешены только первые символы или по одному на любой позиции
Если слово одно и можно только первые, то совсем просто. Перед проверкой удаляем первый символ и все:
PHP |
<? |
а если все сложнее, то давай подробности.
Спустя 2 часа, 57 минут, 20 секунд (9.03.2009 - 09:51) silent_zzz написал(а):
как раз то что нужно! Спасибо!