2010-11-04 3 views
4

Я пытаюсь извлечь содержимое после хэштега, используя php.Как извлечь содержимое хэштега?

Например:

$sentence = 'This #Coffee is the #best!!'; 

Как получить значение 'Кофе' и 'лучше? Обратите внимание, я не хочу, восклицательный знак после того, как «лучший»

ответ

14

довольно безопасный броской все в UTF-8/Юникод:

preg_match_all('/#([\p{L}\p{Mn}]+)/u',$string,$matches); 
var_dump($matches); 

Хотя, если вы не используете/ожидающей экзотические персонажи, это может работать одинаково хорошо и более читаемым:

preg_match_all('/#(\w+)/',$string,$matches); 
+0

, который работает отлично, спасибо так много! – anna

+0

Я изменил регулярное выражение, чтобы включить хэштеги, которые также могут содержать символы подчеркивания и числовые символы, т.е. # NYE2016: preg_match_all ('/ # ([\ p {Pc} \ p {N} \ p {L} \ p {Mn}] +)/u', $ string, $ matches); – minaz

+0

@minaz спасибо за ваш RE. –

1

Попробуйте это:

|\#(\w*)| 

Run в предложении, как

Я хочу, чтобы все #something с # Эта

Он будет получать «что-то» и «это». Im предполагая, что вы хотите только Regex функция, чтобы использовать это preg_match_all

+2

Почему вы избегаете '#'? – Gumbo

+1

Я знаю, что это не регулярное выражение, но это просто привычка избегать вещей, которые я не слишком уверен. Он отлично работает в обоих направлениях. –

0

Я хотел бы лучше:

preg_match_all('/#([^#]+)#/msiU',$string,$matches); 

обрабатывать многострочные предложения

Смежные вопросы