Hashtag in Zeilen suchen

BartTotal

Mitglied
Hallo
Ich verzweifle an einem Problem.
Ich möchte die Pinnwand bzw Gästebucheinträge nach #(titel) durchsuchen und ausgeben.
Am Schluss soll es eine Liste ausgeben wo man alle # varianten finden kann.

Erklärung:
Ich brauche am Schluss eine Ausgabe aller verwendeten Hashtags bei den Gästebuch einträgen.
Sprich:
#lol #test #oke #weltkrieg #frieden.....
und das geordnet nach datum der Beiträge in denen sie vorkamen.

das Problem ist ich weiss nicht wie ich nach variablen Hashtag suchen kann.


hab das mal so probiert aber die Variablen hashtags findet er nicht:
PHP:
$hashtag = '#(.*?)';


$result = mysql_query("SELECT * FROM `iv_pinnwand_content` WHERE `content` LIKE '%$hashtag%' ORDER BY `create_date` DESC LIMIT 5");
while($row = mysql_fetch_object($result)) {
echo "$row->titel<br><br>";
}
 
Hab das hier jetzt zusammen gestellt.
das Problem ist jetzt das es für jede Zeile ein <br> setzt, weiss jemand wie man nur für die vorhanden # ein <br> einsetzt?

PHP:
function gethashtags($text)
{
  //Match the hashtags
  preg_match_all('/(^|[^a-z0-9_])#([a-z0-9_]+)/i', $text, $matchedHashtags);
  $hashtag = '';
  // For each hashtag, strip all characters but alpha numeric
  if(!empty($matchedHashtags[0])) {
     foreach($matchedHashtags[0] as $match) {
         $hashtag .= preg_replace("/[^a-z0-9]+/i", "", $match).',';
     }
  }
    //to remove last comma in a string
return rtrim($hashtag, ',');
}

$result = mysql_query("SELECT * FROM `iv_pinnwand_content` ORDER BY `create_date` DESC"); 
while($row = mysql_fetch_object($result)){
$text = $row->content;
echo gethashtags($text), "<br>";
}
 
Zuletzt bearbeitet:
ausgabe ergibt:

Ein weiteres problem ist wenn in der selben zeile content 2 mal ein #(WORT) vor kommt, gibt es das aus:

Es gibt ein # für jede zeile die es hat. sollte doch nur für jede zeile inder ein #(WORT) vorkommt ausgeben sprich:

Und $test gibt jede Zeile aus bzw deren spalte "content"
 
Zuletzt bearbeitet von einem Moderator:
Einfach gesagt muss ich ja nur einen script haben der alle Spalte "content" nach #tags sucht und diese ausgibt, egal ob 1 oder mehrere in einer Zeile vorkommen.
Brauche einfach eine Liste mit allen #tags die es gibt. (keins doppelt oder mehrfach)
 
Zuletzt bearbeitet:
Das hier:
PHP:
function gethashtags($text)
{
  //Match the hashtags
  preg_match_all('/(^|[^a-z0-9_])#([a-z0-9_]+)/i', $text, $matchedHashtags);
  $hashtag = '';
  // For each hashtag, strip all characters but alpha numeric
  if(!empty($matchedHashtags[0])) {
     foreach($matchedHashtags[0] as $match) {
         $hashtag .= preg_replace("/[^a-z0-9]+/i", "", $match).',';
     }
  }
    //to remove last comma in a string
return rtrim($hashtag, ',');
}

$result = mysql_query("SELECT * FROM `iv_pinnwand_content` ORDER BY `create_date` DESC");
while($row = mysql_fetch_object($result)){
$text = $row->content;

preg_match_all("/(#\w+)/", $text, $matches);
var_dump($matches);
}

gibt mir das aus:
array(2) { [0]=> array(1) { [0]=> string(5) "#TEst" } [1]=> array(1) { [0]=> string(5) "#TEst" } } array(2) { [0]=> array(2) { [0]=> string(10) "#weltkrieg" [1]=> string(5) "#test" } [1]=> array(2) { [0]=> string(10) "weltkrieg" [1]=> string(5) "#test" } } array(2) { [0]=> array(1) { [0]=> string(5) "#test" } [1]=> array(1) { [0]=> string(5) "#test" } } array(2) { [0]=> array(0) { } [1]=> array(0) { } } array(2) { [0]=> array(0) { } [1]=> array(0) { } } array(2) { [0]=> array(0) { } [1]=> array(0) { } } array(2) { [0]=> array(0) { } [1]=> array(0) { } } array(2) { [0]=> array(0) { } [1]=> array(0) { } } array(2) { [0]=> array(0) { } [1]=> array(0) { } } array(2) { [0]=> array(0) { } [1]=> array(0) { } } array(2) { [0]=> array(0) { } [1]=> array(0) { } } array(2) { [0]=> array(0) { } [1]=> array(0) { } } array(2) { [0]=> array(0) { } [1]=> array(0) { } }
 
Hab das hier gefunden verkürzt das ganze oben aber gibt immer noch das gleiche problem.

http://w3lessons.info/2013/11/18/facebook-style-hashtag-system-with-php-mysql-jquery/

PHP:
function gethashtags($text) {
   preg_match_all('/\B[@#]\K\w+/', $text, $matches);
   return implode(',', $matches[0]);
}


$result = mysql_query("SELECT * FROM `iv_pinnwand_content` ORDER BY `create_date` DESC");
while($row = mysql_fetch_object($result)){
$text = $row->content;

echo gethashtags("$text"), "<br>";

}
 
OT:
W3-Schools, W3-Lessons, W3-irgendwas-und-so-weiter haben nichts mit dem W3C zu tun.
Die kommen sich nur besser vor, weil sie sich so nennen.
Und der Code dort ist veraltet, mysql_query ist nicht mehr zum Einsetzen gedacht.
 
Zurück