Wątek przeniesiony 2015-04-21 11:46 z Inżynieria oprogramowania przez somekind.

Wyrażenie Nieregularne wyszukujące #HashTagi z polskimi znakami! Problem!

0

Witam. Ponieważ nie jestem profesjonalnym ort! zwracam się z prośbą o pomoc do starszych kolegów. Proszę kuknąć na http://tikime4.netai.net/hello.php Tam dokładnie widać z czym mam problem. Szukam wyrażenie regularnego które by wykonało dobrą robotę albowiem chciałbym moją stronkę www wzbogacić o #Haszowe linki do #Twitter. Bardzo was proszę o pomoc!

W tym momencie uzywam w PHP wyrażenia:

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

Wyszukuje mi łądnie #HashTagi ale na polskich znakach przestaje. Domyślam się, że chodzi o prostą i banalną modyfikację tego wyrażenia regularnego.

Dziękuje bardzo za pomoc i życzę miłęgo dnia.
@JamesPradaGroup

0

użyj \S zamiast \w lub wyszczególnij w [] znaki które dopuszczasz

0

albo [^\s,:] jeśli chcesz wszystkie znaki poza przecinkiem, dwukropkiem i pustymi znakami (możesz dopisać inne)

0

#[^\s,:.#@!$%^&*()+=?<>/{}]+ ok no to mam coś takiego http://www.phpliveregex.com a może mi powiesz jak mogę jeszcze wyklczyć nawiasy klamrowe, co?

0

Wykluczyć z czego? Rozumiesz że znaki specjalne musisz escapować poprzez \, prawda? Bo inaczej interpreter nie będzie wiedział czy masz na przykład na myśli kropkę czy kropkę jako meta-symbol oznaczający "dowolny znak"...

0

#[^\s\,\:\.\#\@\!\$\%\^\&\*\(\)\+\=\?\<\>\/\{\}\[\]]+ tak?

1

Źle, bo @Shalom źle podpowiedział. Ogólnie zamiast się męczyć, wystarczyło sprawdzić dokumentację i zastosować grupy unikodowe i całe wyrażenie ma wtedy postać /#(\pL+)/.

1 użytkowników online, w tym zalogowanych: 0, gości: 1