Pytanie Odzyskaj wszystkie hashtagi z tweeta w funkcji PHP


Chcę odzyskać wszystkie hashtagi z tweeta za pomocą funkcji PHP.

Wiem, że ktoś zadał podobne pytanie tutaj, ale nie ma podpowiedzi, jak to zaimplementować w PHP. Ponieważ nie jestem zaznajomiony z wyrażeniami regularnymi, nie wiem, jak napisać funkcję, która zwraca tablicę wszystkich hashtagów w tweecie.

Jak to zrobić, używając następującego wyrażenia regularnego:

#\S*\w

20
2018-06-17 09:55


pochodzenie




Odpowiedzi:


$tweet = "this has a #hashtag a  #badhash-tag and a #goodhash_tag";

preg_match_all("/(#\w+)/", $tweet, $matches);

var_dump( $matches );

* Kreski to niedozwolone znaki dla hashtagów, podkreślenia są dozwolone.


31
2018-06-17 10:20



działa dobrze, dzięki! - snorpey
Zauważ, że $matches daje tablicę o rozmiarze 2. Oba elementy mają te same ciągi. Również nie obsługuje Unicode. - trante
To wyrażenie jest jednym z najlepszych, jakie znalazłem. - henrywright
Uwaga: to wyrażenie regularne będzie pasować tylko do słów angielskich (tak, że # gøypålandet nie będzie dopasowywanych jako hashtag) - Bjørn Børresen
Prawdopodobnie potrzebujesz funkcji bezpiecznego wyrażenia mbyte, nie możesz jej tutaj przetestować, przepraszam, w innym razie wypróbuj rozwiązanie @trante. - Cups


Stworzyłem własne rozwiązanie. To robi:

  • Znajduje wszystkie hashtagi w ciągu znaków
  • Usuwa duplikaty
  • Sortuje hashtagi dotyczące liczenia istnienia w tekście
  • Obsługuje znaki Unicode

    function getHashtags($string) {  
        $hashtags= FALSE;  
        preg_match_all("/(#\w+)/u", $string, $matches);  
        if ($matches) {
            $hashtagsArray = array_count_values($matches[0]);
            $hashtags = array_keys($hashtagsArray);
        }
        return $hashtags;
    }
    

Dane wyjściowe są następujące:

(
    [0] => #_ƒOllOw_
    [1] => #FF
    [2] => #neslitükendi
    [3] => #F_0_L_L_O_W_
    [4] => #takipedeğerdost
    [5] => #GönüldenTakipleşiyorum
)

28
2018-05-17 12:36



+1 za to naprawdę fajne rozwiązanie tego pytania, dziękuję. - Justin Erswell
@trante Czy to nadal działa? Zwrócona tablica jest dla mnie pusta. W jaki sposób łańcuch musi wyglądać lub kodować? - Tom
To nie działa z niektórymi znakami Unicode. na przykład. w języku tajskim # รองเท้า otrzyma tylko # รอง เท Nie zawiera samogłoski w języku tajlandzkim. używaj poniższej metody @minaz! - supersuphot


Nie zapomnij o hashtagach zawierających kod Unicode, wartości liczbowe i podkreślenia:

$tweet = "Valid hashtags include: #hashtag #NYC2016 #NYC_2016 #gøypålandet!";

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

print_r( $matches );

\ p {Pc} - aby dopasować podkreślenie

\ p {N} - znak numeryczny w dowolnym skrypcie

\ p {L} - litera z dowolnego języka

\ p {Mn} - dowolna niepodpisująca przestrzeń (akcenty, umlauty itp.)


11
2018-02-19 05:41





Użyj preg_match_all() funkcjonować:

function get_hashtags($tweet)
{
    $matches = array();
    preg_match_all('/#\S*\w/i', $tweet, $matches);
    return $matches[0];
}

4
2018-06-17 10:08





Wypróbuj to wyrażenie regularne:

/#[^\s]*/i

Uruchomienie tego PHP wyglądałoby następująco:

preg_match_all('/#[^\s]*/i', $tweet_string, $result);

Wynikiem jest tablica zawierająca wszystkie hashtagi w Tweeterze (zapisane jako "$ result" - trzeci argument).

Wreszcie, sprawdź tę stronę. Znalazłem to naprawdę przydatne do testowania wyrażeń regularnych. http://regex.larsolavtorvik.com/

EDYTOWAĆ: Próbowałem twojej regularnej ekspresji i działało też świetnie!


4
2018-06-17 10:02





Posługiwać się twitter-text-php pakiet.

https://github.com/nojimage/twitter-text-php

https://packagist.org/packages/nojimage/twitter-text-php


1
2018-06-04 13:06