Поверьте, перебор циклом кучу массивов, будет работать дольше, чем если я напишу тоже самое на php, и с сервера буду делать POST запрос на этот PHP, обрабатывать его там и возвращать обратно на сервер. Но это бред.
Я крайне зажат в ресурсах, тем более на встроенных функциях. Грубо говоря, пока сервер будет обрабатывать строку, все игроки 'зависнут', а за сутки под 100мб чата набегает..
Почему я упёрся в регулярку? тока потому, что она работает вне потока сервера, и пусть она хоть секунду обрабатывается...
16. Dragon_Knight - 30 Апреля, 2013 - 00:28:46 - перейти к сообщению
17. DlTA - 30 Апреля, 2013 - 00:40:33 - перейти к сообщению
Dragon_Knight
http://forum.php.su/topic.php?fo...70491#1367270491
http://forum.php.su/topic.php?fo...70491#1367270491
18. Champion - 30 Апреля, 2013 - 08:32:25 - перейти к сообщению
если чисто регуляркой, то
PHP:
скопировать код в буфер обмена
скопировать код в буфер обмена
- /(?:(?:дайте|дадите|можно).+?(?:админку|хелперку|хелпера)|(?:админку|хелперку|хелпера).+(?:дайте|дадите|можно))/is
Но если слов больше и порядок тоже не имеет значения, то таким способом можно задолбаться писать.
Можно сделать так (я напишу на PHP, Вы переведете на свой язык):
preg_match_all('/(дайте|дадите|можно)|(админку|хелперку|хелпера)/', $src, $m);
а потом циклом проверить, чтоб все элементы $m[1] были не пустые.
Что будет работать быстрее - preg_match_all + цикл по совпадниям или цикл со стрпозами - вопрос спорный. Регулярка почти всегда быстрее двух стрпозов (если она выполняет то же самое, что планируется сделать двумя стрпозами). А если матчить точное совпадение, то она сопоставима по скорости со стрпозом.