Machen Automatische Verweise in einem Text aus Datei: Wie Interner Wikipedia - PHP
-
21-09-2019 - |
Frage
Ich möchte Hilfe zu diesem Skript Ich mache ...
Ich mag meine Website eine wikipedia in mir sein ... nimmt zum Beispiel habe ich eine PHP-Website ... ich täglich Artikel zu veröffentlichen.
Angenommen, ich veröffentliche 2 Artikel auf Jenna Bush und Michael Jackson bzw.
Jetzt speichere ich in text / xml / Datenbank Text und Link
Beispiel
jenna bush, http://www.domain.com/jenna.html
michael jackson, http://www.domain.com/michael.html
oder eine beliebige, welche Möglichkeiten erforderlich wie
<xml>
<item>
<text>jenna bush</text>
<link>http://www.domain.com/jenna.html</link>
</item>
... etc
</xml>
jetzt, was ich will, ist der PHP-Skript automatisch zu ihren jeweiligen Links, um alle über meine Website jede Jenna Bush oder jeder Michael Jackson ...
verknüpft umwandeln sollteJede Hilfe ist sehr geschätzt ...
Lösung 2
maßgeschneiderte ich es und hier ist für alle Interessierten
function tags_autolink($text)
{
$text = " $text ";
$query_tags_autolink = "SELECT tag from tags";
$rs_tags_autolink = mysql_query($query_tags_autolink) or print "error getting tags";
while($row_tags_autolink = mysql_fetch_array($rs_tags_autolink))
{
$tag_name = trim($row_tags_autolink['tag']);
$tag_url = "http://www.domain.com/tag/".createLink(trim(htmlentities($tag_name)))."/";
$text = preg_replace("|(?!<[^<>]*?)(?<![?./&])\b($tag_name)\b(?!:)(?![^<>]*?>)|imsU","<a href=\"$tag_url\">$1</a>" , $text);
}
return trim( $text );
}
die Verknüpfung erstellen Funktion macht einfach eine Reihe von "ABCD ist kk" wie "ABCD-is-kk" für einen Tag Seite endet;)
Prost!
Andere Tipps
Unter der Annahme, dass der Text diese Worte sind in der Datenbank der beste Weg, so etwas zu erreichen, enthält, wird unter Verwendung von str_replace http://ie2.php.net/manual/en/function.str-replace.php
Kurz bevor der Text an die Datenbank übermittelt wird Sie führen eine Funktion auf, dass sieht für bestimmte Phrasen und ersetzt sie mit anderen Phrasen.
Alternativ und wahrscheinlich ein besserer Ansatz ist die gleiche, die Mediawiki (die Software, dass wikipedia läuft auf Anwendungen), jedes Mal wenn Sie einen Link zu einem anderen Artikel in einer Mediawiki erstellen möchten Sie setzen [[]] um es zum Beispiel [ [Michael Jackson]]. Auf diese Weise haben Sie mehr Kontrolle darüber, was zu einem Link.
Beispiel: Wenn Sie einen Artikel über Prinz den Musiker und ein auf Prinz Charles hatte und man wollte Link zu Prinz Charles, die erste Methode finden könnte Prince ersten und Link zu ihm, aber wenn Sie das Mediawiki-Methode verwenden, würden Sie schreiben [[Prinz Charles]] und es würde wissen, was zu suchen. Um dies zu tun Ich würde empfehlen, preg_match http: //www.php. net / manual / en / function.preg-match.php
Es kann sich lohnen, einen Blick an, wie Mediawiki macht das gleiche, können Sie es kostenlos herunterladen und es geschrieben in PHP
function auto_href($x)
{
$x = explode(' ', $x);
foreach ($x as $y)
{
if (substr($y, 0, 7) == 'http://')
$y = '<a href="'.$y.'">'.$y.'</a>';
$z[] = $y;
}
return implode($z, ' ');
}
function tags_autolink()
{
$conn = mysqli_connect("localhost", "root", "", "sample")
or die ("Could not connect to mysql because ".mysqli_error());
$text = 'You paragraph or text here';
$query_tags_autolink = "SELECT tag from tags";
$rs_tags_autolink = mysqli_query($conn,$query_tags_autolink) or print "error getting tags";
while($row_tags_autolink = mysqli_fetch_array($rs_tags_autolink))
{
$tag_name = trim($row_tags_autolink['tag']);
$trimedurl = str_replace(' ', '-',$tag_name);
$trimedurl=strtolower("$trimedurl");
$tag_url = "http://yourdomain/tag/$trimedurl";
$text = preg_replace("|(?!<[^<>]*?)(?<![?./&])\b($tag_name)\b(?!:)(?![^<>]*?>)|imsU","<a href=\"$tag_url\">$1</a>" , $text);
}
return trim($text);
}
echo tags_autolink() ;