PHP . SU
Программирование на PHP, MySQL и другие веб-технологии
Без описания
Поиск в теме | Версия для печати
tempo
Отправлено: 27 Марта, 2014 - 18:35:08
Гость
Покинул форум
Сообщений всего: 90
Дата рег-ции: Авг. 2013
Помог: 0 раз(а)
Есть регулярное выражение для отбора хэш тегов
все работает хорошо, но вот ловится и то что начинается не только на решетку(#)
Примером ловит
и такое
, а должно только такое
(Отредактировано автором: 27 Марта, 2014 - 18:39:16)
tempo
Отправлено: 27 Марта, 2014 - 19:17:33
Гость
Покинул форум
Сообщений всего: 90
Дата рег-ции: Авг. 2013
Помог: 0 раз(а)
IllusionMH пишет: tempo , так добавьте начало ^ и конец строки $ в регулярку если ничего другого быть не должно
может быть но раздельно с хэштегом
(Отредактировано автором: 27 Марта, 2014 - 19:17:48)
tempo
Отправлено: 27 Марта, 2014 - 20:52:13
Гость
Покинул форум
Сообщений всего: 90
Дата рег-ции: Авг. 2013
Помог: 0 раз(а)
IllusionMH пишет: tempo , тогда поставьте свое "раздельно" (\s или что там еще у вас может быть)
в том то и вся суть что я не знаю как, потому и написал сюда
вот к примеру как должно быть
#tag - true
text #tag text - true
text #tag -true
text#tag - false
буду благодарен за помощь.
(Отредактировано автором: 27 Марта, 2014 - 20:52:51)
DlTA
Отправлено: 27 Марта, 2014 - 23:13:52
Постоянный участник
Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010
Помог: 53 раз(а)
/\b#(\w{1,24})\b/
\b - Граница слова
wikipedia (Отредактировано автором: 27 Марта, 2014 - 23:15:39)
tempo
Отправлено: 18 Апреля, 2014 - 14:21:42
Гость
Покинул форум
Сообщений всего: 90
Дата рег-ции: Авг. 2013
Помог: 0 раз(а)
IllusionMH пишет: tempo , так ставьте пробел или начало строки, в чем трабл?
Не мог никак зайти на этот сайт.. есть один недостаток в вашем регулярном выражении, оно работает через один хэштег
(Добавление)
DlTA пишет: /\b#(\w{1,24})\b/
\b - Граница слова
wikipedia
Данное регулярное выражение вообще не находит совпадений
IllusionMH
Отправлено: 18 Апреля, 2014 - 14:28:34
Активный участник
Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011
Откуда: .kh.ua
Помог: 242 раз(а)
tempo , результат для пиведенных строк совпадает с ожиданиями.
tempo пишет: оно работает через один хэштег
Если вы пытаетесь работать с принципиально другими строками, чем выше, тогда она может и не сработать.
Подробней с примерами где сработало а где нет.
tempo
Отправлено: 18 Апреля, 2014 - 14:34:24
Гость
Покинул форум
Сообщений всего: 90
Дата рег-ции: Авг. 2013
Помог: 0 раз(а)
IllusionMH пишет: tempo , результат для пиведенных строк совпадает с ожиданиями.
tempo пишет: оно работает через один хэштег
Если вы пытаетесь работать с принципиально другими строками, чем выше, тогда она может и не сработать.
Подробней с примерами где сработало а где нет.
синий это ссылка(так должно быть при нахождении), черный просто текст(не найдено)
вот к примеру 4 хэштега подряд
Прикреплено изображение (Отредактировано автором: 18 Апреля, 2014 - 14:35:14)
duhon
Отправлено: 22 Апреля, 2014 - 15:51:14
Гость
Покинул форум
Сообщений всего: 72
Дата рег-ции: Нояб. 2011
Помог: 5 раз(а)
можно просто
PHP:
скопировать код в буфер обмена
//Output for => 5.3.4
'#tag' ,
'text #tag text' ,
'text #tag' ,
'text#tag' ,
) ;
/*Array
(
[0] => #<tag>
[1] => text #<tag> text
[2] => text #<tag>
[3] => text#tag
)*/
echo preg_replace ( '/\B#(\S{1,24}+)/u' , '<$0>' , '#111 тапинамбур#222 #333 #444' ) ; // <#111> тапинамбур#222 <#333> <#444>
P.S. как бонус срабатывает якорное ускорение работы регулярки
P.S.S если php старая то можно и так '/(?<!\S)#\S{1,24}+/u' (но лучше поменять php версию)(Отредактировано автором: 22 Апреля, 2014 - 16:26:16)
Sanek_OS9
Отправлено: 06 Сентября, 2014 - 21:48:49
Гость
Покинул форум
Сообщений всего: 115
Дата рег-ции: Окт. 2012
Откуда: Украина
Помог: 0 раз(а)
duhon пишет: можно просто
PHP:
скопировать код в буфер обмена
//Output for => 5.3.4
'#tag' ,
'text #tag text' ,
'text #tag' ,
'text#tag' ,
) ;
/*Array
(
[0] => #<tag>
[1] => text #<tag> text
[2] => text #<tag>
[3] => text#tag
)*/
echo preg_replace ( '/\B#(\S{1,24}+)/u' , '<$0>' , '#111 тапинамбур#222 #333 #444' ) ; // <#111> тапинамбур#222 <#333> <#444>
P.S. как бонус срабатывает якорное ускорение работы регулярки
P.S.S если php старая то можно и так
'/(?<!\S)#\S{1,24}+/u' (но лучше поменять php версию)
Спасибо все работает мне пригодилось)
Поиск в теме | Версия для печати
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Регулярные выражения »
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
Powered by ExBB FM 1.0 RC1. InvisionExBB