Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Регулярки поиск фразы после вразы

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
gefard
Отправлено: 30 Апреля, 2016 - 22:22:50
Post Id



Гость


Покинул форум
Сообщений всего: 64
Дата рег-ции: Март 2012  


Помог: 1 раз(а)




Заранее конечно извините меня, но с регулярками туго у меня
щас использую рекурсию + mb_strpos
для нахождения всех слов "C D E" после "A B"
может кто опишет хоть примерно регулярку
честное слово мужики мозгов не хватает.
(Добавление)
Мужики кто сможет написать эту регулярку preg_match_all
тому 500 руб на яндекс счет, извиняйте прочего у меня нету.
потому как тупо напишите за меня чтоб я не использовал mb_strpos($str, ' ',2);
постоянно в цикле
(Добавление)
Мужики, пояснение
(Добавление)
найти после "Вася пошел гулять" два следующих слова
"в библиотеку"
"в парк"
"на набережную"
слово может содержать все символы кроме пробела
потому как пробел - это разделитель между слов

(Отредактировано автором: 01 Мая, 2016 - 00:08:25)

 
 Top
Строитель
Отправлено: 30 Апреля, 2016 - 23:53:19
Post Id



Участник


Покинул форум
Сообщений всего: 1581
Дата рег-ции: Февр. 2014  
Откуда: Украина


Помог: 74 раз(а)




gefard Вот попробуйте
PHP:
скопировать код в буфер обмена
  1. $subj = 'Вася пошел гулять в библиотеку';
  2. $patt = '~\w+~iu';
  3. preg_match_all($patt, $subj, $arr);
  4.  
  5. echo $arr[0][3] .' '. $arr[0][4]; //в библиотеку
 
 Top
gefard
Отправлено: 01 Мая, 2016 - 00:07:47
Post Id



Гость


Покинул форум
Сообщений всего: 64
Дата рег-ции: Март 2012  


Помог: 1 раз(а)




Строитель пишет:
gefard Вот попробуйте
PHP:
скопировать код в буфер обмена
  1. $subj = 'Вася пошел гулять в библиотеку';
  2. $patt = '~\w+~iu';
  3. preg_match_all($patt, $subj, $arr);
  4.  
  5. echo $arr[0][3] .' '. $arr[0][4]; //в библиотеку


Строитель, а что значит ~\w+~? и каким образом оно мне найдет фразу C D E после фразы A B?
 
 Top
Строитель
Отправлено: 01 Мая, 2016 - 00:14:13
Post Id



Участник


Покинул форум
Сообщений всего: 1581
Дата рег-ции: Февр. 2014  
Откуда: Украина


Помог: 74 раз(а)




gefard пишет:
а что значит ~\w+~
Это шаблон, в котором идёт поиск по словам \w произвольной длины + . Каждое найденное слово будет сохранено в отдельную ячейку массива. В конкретном тексте ~Вася пошел гулять в библиотеку~ в массиве будет 5 ключей :

$arr[0][0] == Вася
$arr[0][1] == пошел
$arr[0][2] == гулять
$arr[0][3] == в
$arr[0][4] == библиотеку

Два последних мы и используем, разделив их пробелом

echo $arr[0][3] .' '. $arr[0][4]; //в библиотеку
(Добавление)
gefard, я этот код на локалке проверил, всё ок.
 
 Top
gefard
Отправлено: 01 Мая, 2016 - 01:09:38
Post Id



Гость


Покинул форум
Сообщений всего: 64
Дата рег-ции: Март 2012  


Помог: 1 раз(а)




[quote=Строитель][/quote]
Извини, я уже бухой, 1 мая все-таки,
'~\'. $fraza .'+~'
ничего не перепутал?
яндекс счет в личку
 
 Top
Строитель
Отправлено: 01 Мая, 2016 - 10:58:25
Post Id



Участник


Покинул форум
Сообщений всего: 1581
Дата рег-ции: Февр. 2014  
Откуда: Украина


Помог: 74 раз(а)




gefard пишет:
ничего не перепутал?
Всё перепутал Радость
Ну вот второй пример
PHP:
скопировать код в буфер обмена
  1. $subj = 'A B C D E';
  2. $patt = '~\w+~iu';
  3. preg_match_all($patt, $subj, $arr);
  4. echo $arr[0][2] .' '. $arr[0][3] .' '. $arr[0][4]; //C D E

(Добавление)
найдет фразу C D E после фразы A B
 
 Top
gefard
Отправлено: 01 Мая, 2016 - 12:39:48
Post Id



Гость


Покинул форум
Сообщений всего: 64
Дата рег-ции: Март 2012  


Помог: 1 раз(а)




Строитель
твой код это explode просто

я тут прикинул

CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. $text = 'ворота из стали - это явное преимущесто. Стальные ворота очень красивы, и практичны. Стальные ворота надежно прослужат вам много лет. Закажите стальные ворота на нашем сайте по выгодным ценам.';
  3.  
  4.  
  5. preg_match_all("~\ворота\s(\S+)\s(\S+)\s(\S+)~iu",$text, $arr );
  6.  


Цитата:
Array
(
[0] => Array
(
[0] => ворота из стали -
[1] => ворота очень красивы, и
[2] => ворота надежно прослужат вам
[3] => ворота на нашем сайте
)

[1] => Array
(
[0] => из
[1] => очень
[2] => надежно
[3] => на
)

[2] => Array
(
[0] => стали
[1] => красивы,
[2] => прослужат
[3] => нашем
)

[3] => Array
(
[0] => -
[1] => и
[2] => вам
[3] => сайте
)

)


вот что мне нужно, пока я не смог сделать так

preg_match_all("~\Стальные ворота\s(\S+)\s(\S+)\s(\S+)~iu",$text, $arr );
(Добавление)
вот и решение

preg_match_all("/Стальные ворота\s(\S+)\s(\S+)\s(\S+)/iu",$text, $arr );

Цитата:

Array
(
[0] => Array
(
[0] => Стальные ворота очень красивы, и
[1] => Стальные ворота надежно прослужат вам
[2] => стальные ворота на нашем сайте
)

[1] => Array
(
[0] => очень
[1] => надежно
[2] => на
)

[2] => Array
(
[0] => красивы,
[1] => прослужат
[2] => нашем
)

[3] => Array
(
[0] => и
[1] => вам
[2] => сайте
)

)
 
 Top
Строитель
Отправлено: 01 Мая, 2016 - 22:05:29
Post Id



Участник


Покинул форум
Сообщений всего: 1581
Дата рег-ции: Февр. 2014  
Откуда: Украина


Помог: 74 раз(а)




gefard пишет:
твой код это explode просто
При чём тут explode просто? Просто ты не хочешь платить за конкретное решение, но тогда вопрос - зачем было кричать, что заплачу за решение?
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Напишите за меня, пожалуйста »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB