2010-11-04 6 views
4

J'essaie d'extraire le contenu en suivant un hashtag en utilisant php.Comment extraire le contenu du hashtag?

Par exemple:

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

Comment puis-je obtenir la valeur 'café' et 'mieux? Remarque, je ne veux pas le point d'exclamation après 'meilleur'

Répondre

14

Un joli fourre-tout en sécurité dans utf-8/unicode:

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

Bien que, si vous ne l'utilisez/attendre personnages exotiques, cela pourrait fonctionner aussi bien et est plus lisible:

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

qui fonctionne parfaitement, merci beaucoup! – anna

+0

J'ai modifié l'expression régulière pour inclure des hashtags qui peuvent également contenir des caractères de soulignement et des caractères numériques ie. # NYE2016: preg_match_all ('/ # ([\ p {Pc} \ p {N} \ p {L} \ p {Mn}] +)/u', $ chaîne, $ correspondances); – minaz

+0

@minaz merci pour votre RE. –

1

Essayez celui-ci:

|\#(\w*)| 

Exécuter dans une phrase comme

Je veux obtenir tous #something aveC#Ceci

Il récupérera « quelque chose » et « ce ». Im en supposant que vous ne vouliez que le Regex, la fonction à utiliser est preg_match_all

+2

Pourquoi échappez-vous au '#'? – Gumbo

+1

Je sais que ce n'est pas une entité Regex, mais c'est juste une habitude d'échapper à des choses que je ne suis pas trop sûr. Cela fonctionne très bien dans les deux sens. –

0

Je voudrais mieux:

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

Manipulable phrases multilignes

Questions connexes