Вопрос по строковым функциям ПХП

123
.:nbd:.
На сайте с 04.11.2008
Offline
98
#11
FeoOne:
это альтернативный вариант

Да, но он работает только с точкой. А в примере, что привел ТС есть еще и вопросительный знак, а возможно и восклицательный то же нужен будет =)

Палю тему Дорген (/ru/forum/439165) + кеи + контент (http://datarama.biz/) + еще немного кеев и скриптов (http://amazingsoftware.ru/) = $$$ Мы делаем доры, а не пишем романы (c) один Дима рефка dino_spomoni (http://goo.gl/w62v3)
entropy
На сайте с 21.09.2007
Offline
43
#12

if(($pos=strrpos($text, '.,!'))!==false) $text=substr($text, 0, $pos+1);

entropy добавил 19.11.2009 в 18:55

Пардон, так не выйдет. В STL есть find_last_of

Просто регэкспы медленнее работают.

S
На сайте с 12.11.2009
Offline
25
shi
#13

fixed10symb

W
На сайте с 10.05.2009
Offline
114
#14
if(($pos=strrpos($text, '.,!'))!==false) $text=substr($text, 0, $pos+1);

Помоему это бред ))

preg_match('|(.+[\.\?\!]).+?|', $text, $matches);
$need = $matches[1];

Это выловит только первое предложение, помоему надо написать так -

preg_match('|(.+[\.\?\!])[^\.\?\!]+?|', $text, $matches);
$need = $matches[1];
S
На сайте с 12.11.2009
Offline
25
shi
#15
wolfston:

Это выловит только первое предложение

Нет, оно выловит все правильно. Читайте про жадную выборку и чем отличается + от +?

B
На сайте с 07.07.2006
Offline
147
#16
shi:
Читайте про жадную выборку

это как у яндекса в Снежинске? :)

N4
На сайте с 27.07.2008
Offline
89
#17

strpos,substr и иже с ними выполняются быстрее чем preg_match.

это актуально вообщем-то в том случае, если скрипты будут работать с хорошей нагрузкой или с большими объемами.

но тем не менее, всегда используйте строковые функции там, где возможно вместо функций по работе с регулярными выражениями.

приучайте себя делать качественные пхп скрипты.

Интернет-магазин: SP.Easy.Shop 1.4
S
На сайте с 12.11.2009
Offline
25
shi
#18
number4:

но тем не менее, всегда используйте строковые функции там, где возможно вместо функций по работе с регулярными выражениями.
приучайте себя делать качественные пхп скрипты.

Вы понимаете что это слишком громкое заявление?) Пруфлинк?)

Время выполнения регэкспов меркнет с задержками io, синхронизацией потоков и прочему стаффу в крупном приложении. Вы хоть раз слышали про улучшение перфоманса приложения переходом с регэкспов на стрлен, стрпос?))) Более того не понимаю привязку к пхп, регэкспы есть везде, да и не появились они не в нем.

shi добавил 20.11.2009 в 11:51

Вот мой пруфлинк с тестом http://lzone.de/articles/php-string-search.htm

Как видно из таблиц с тестами 10000 выполнений регэкспов медленнее10000 выполнений аналогичной функции на стрлен, стрпос. Но 10к выполнений далеко не самая большая большая нагрузка, ибо регэкспы компилируются и для действительно больших значений они будут быстрее.

W
На сайте с 10.05.2009
Offline
114
#19
number4:
strpos,substr и иже с ними выполняются быстрее чем preg_match.
это актуально вообщем-то в том случае, если скрипты будут работать с хорошей нагрузкой или с большими объемами.
но тем не менее, всегда используйте строковые функции там, где возможно вместо функций по работе с регулярными выражениями.
приучайте себя делать качественные пхп скрипты.

Слушай умник, не везде можно использовать strpos, substr. Например в данном примере вместо одной регулярки надо было бы городить целую гору кода чтобы использовать строковые функции. И раз такой умный, вместо того чтобы разводить гавно на форуме, предложил бы свой супер быстрый вариант решения задачи на строковых функциях. А прийти перднуть, скопипастив откуда нибудь умную мысль, и считать себя крутым, может каждый дурак.

ewg777
На сайте с 04.06.2007
Offline
225
#20
wolfston:
Слушай умник, не везде можно использовать strpos, substr. Например в данном примере вместо одной регулярки надо было бы городить целую гору кода чтобы использовать строковые функции. И раз такой умный, вместо того чтобы разводить гавно на форуме, предложил бы свой супер быстрый вариант решения задачи на строковых функциях. А прийти перднуть, скопипастив откуда нибудь умную мысль, и считать себя крутым, может каждый дурак.

Вы не лучше.


$items = array('.', '?', '!', '!?', '...');

foreach($items as $chr) {
$pos[] = strripos($str, $chr);
}

$str = substr($str, 0, max($pos) + 1);

А это работает.

123

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий