[пхп] получить подстроку из n-слов и содержащую $expression?

IvladV71

есть большая строка, в которой встречается выражение $expression
можно как нить получить подстроку, состоящюю из определённого числа слов и содержащюю $expression ?

marriaje

Как-как?
Может, пример поможет понять....

maggi14

регекспы?

IvladV71

а без них никак?
неохота с ними возиццо...

IvladV71

ну как в любом поисковике, выводится часть текста, содержащяя какое то выражение

IvladV71

можно конечно substr попробовать, но он отсекает вроде бы по количеству символов
хотя наверно можно чё нить придумать

marriaje

если не заморачиваться, чтобы слова были целые, то возиться не надо
кажись
.{100}$expression.{100} прокатит

marriaje

А, надо целые слова...
тогда ([a-zA-Z] ){20}$expression([a-zA-Z] ){20}
наверное, можно упростить, но я лох
В скобки видимо придется добавить еще русский алфавит в KOI и 1251.

maggi14

он же просил не через регекспы

vlfdimir58

кстати, напиши, как этобудет выглядеть, если добавить в koi и в cp1251 ?

marriaje

Хммм... действительно, можно добавить только в 1251 (если регексп сыитается написанным в 1251).
А а KOI-символы те же, только в другом порядке (если на них смотреть в 1251)

a10063

а что...
находишь позицию, где встречается слово, отступаешь вперед и назад и вырезаешь substr
чем плохо?
ред.:
да, а слова считать по пробелам...

vlfdimir58

слова надо не только по пробелам определять
// split text by ' ',\r,\n,\f,\t
$split_array = preg_split('/\s+/',$string);
// count matches that contain alphanumerics
$word_count = preg_grep('/[a-zA-Z0-9\\x80-\\xff]/', $split_array);

a10063

маза, что не только по пробелам, но это должно быть оговорено в условии задачи... (что считать словом)
мне кажется, что word split не стоит делать ввиду неоправданных затрат памяти и времени
лучше просто "отступать" от найденой позиции используя заданные разделители

IvladV71

ну в итоге так и сделал
Оставить комментарий
Имя или ник:
Комментарий: