Ich entwickle gerade ein leichtgewichtiges internes Nachrichtenskript für eine lokale Gruppe, das einen benutzerdefinierten BBCode-Stil-Parser verwendet, um Forum-Stil-Tags wie [b] in sein HTML-Äquivalent zu übersetzen.Explodierende Mehrfach-Hashtags
Ich habe auch eine Twitter-ähnliche Hashtag-Funktion hinzugefügt, so dass Leute Diskussionen im Messaging-System taggen und verfolgen können, was gut funktioniert, bis der Benutzer mehr als einen Hashtag in den Text eingibt.
Normalerweise würde der Benutzer seinen Text in das Übermittlungsformular als solches eingeben.
Lorum Ipsum dolor sit amet, #consectetur adipiscing elit.
SQL verwenden, die Diskussion Tracker lädt die letzten 20 Meldungen und Schleifen durch sie jedes Mal die TrackDiscussion Aufruf ($ i); Funktion. Der Parameter $ i ist der Ort, an dem der Text/die Vorlage eingegeben wird, um nach Hashtags zu suchen.
function TrackDiscussion($i,$str=1) {
$keywords="";
preg_match_all('/#(\w+)/',$i,$matches);
$i = 0;
if($str){
foreach($matches[1] as $match) {
$count=count($matches[1]);
$keywords .= "$match";
$i++;
if ($count>$i) $keywords .= ", ";
}
}
else{
foreach($matches[1] as $match) {
$keyword[]=$match;
}
$keywords=$keyword;
}
return $keywords;
}
Das alles funktioniert gut, bis es mehr als ein Hashtag im Text findet, und statt der Ausgabe:
<a href="http://example.com/tag/hashtag1">#hashtag1</a>, <a href="http://example.com/tag/hashtag2">#hashtag2</a>
Es gibt:
<a href="http://example.com/tag/hashtag1,hashtag2">#hashtag1, #hashtag2</a>
ich die unordentlichen entschuldigen Code, aber hätte ich recht damit zu glauben, dass ich die Keywords auseinander spalten müsste, am ehesten durch die Explode-Funktion?
Wenn mir jemand einen Hinweis geben könnte, wo ich das hinbringen würde, wäre ich mehr als dankbar, ich habe es immer und immer wieder durchgegangen und ich kann meinen Fehler nicht finden.
Dank
Der Code, der die Links tatsächlich erzeugt, ist wahrscheinlich derjenige, der das Problem. – apokryfos
Tour-Hashtag werden als String in $ keywords gespeichert, Sie verketten Strings. Gib keine Zeichenfolge von trackDiscussion() zurück, gib ein Array zurück. –