Mailinglisten-Archive |
Hallo Gregor, > > Hallo Liste, > > ich bekomme als MySQL-Suchergebnis einer Tabelle bspw. folgenden Inhalt: > > > > Jugendroman zur Jugend-Soap "<a > > href="http://www.schloss-einstein.de/" > > target="_blank">Schloss Einstein</a>" > > > > Wie kann ich PHP jetzt dazu veranlassen, alle Links durch einen > PHP-Befehl > > zu ersetzen? Es sollte dann also das folgende Ergebnis herauskommen: > > > Hi Nico! > > Du kannst das Suchergebnis doch mit dem print"" Befehl ausgeben > lassen. Du müsstest dann aus dem String nur die Anführungszeichen löschen > und fertig! > > zB: > $Suchergebnis=str_replace('"','',$Suchergebnis); // " durch "Nichts" > ersetzt > print $Suchergebnis; ich will das Ergebnis gar nicht ausgeben lassen. Die Links, die im Suchergebnis vorhanden sind, sollen durch einen PHP-Befehl ersetzt werden, der dann auch ausgeführt werden soll. Dabei geht es speziell um das Zählen der Klicks auf einen Link. Dabei habe ich mir eine Funktion, zusammen mit Thomas Gigold aus der Liste, geschrieben. An diese wird folgendes übergeben: <schnipp> <?php makelink ("Adresse","Text"); ?> </schnapp> Rückgabe: Link in folgender Form: <schnipp> <a href=link.php?id=58b4c02436b7da1bc19986d5c01f8778 target=_blank>TEXT aus Funktionsaufruf</a> </schnapp> Mit Klick auf diesen Link, also Aufruf von link.php?id=... wird die MySQL-DB dazu veranlasst, die URL zur 16stelligen, nur einmal vergebenen ID herauszufiltern und einen Header("Location: ")... Befehl auszuführen. Der Benutzer muss also, um zur verlinkten Seite zu gelangen, zwangsläufig auf den Link klicken, wenn er die Adresse nicht kennt. Ein Mitloggen der Klicks ist also zu 99% möglich. Jetzt wird diese ID aber dynamisch erzeugt: if ($url steht in DB drin) nehme die ID dazu if ($url steht nicht in DB drin) mache neue ID, solange, bis eine wirklich neue gefunden ist, die noch nicht vergeben ist Und das ermöglicht einen wirklich universellen Einsatz, ohne den Link vorher definiert zu haben. Jetzt kommen als SELECT-Ergebnis aus der DB die Links noch in der alten Form und sollen in die neue umgesetzt werden, was aber ja so nicht geht.... Da kommt wieder mein Problem. Um es nochmals zu verdeutlichen, unten der Quelltext der Link-Zähl-Datei (zum Kopieren, bei Einsatz bitte Mail an mich). Also, Problem in Kurzform: MySQL liefert aus Select tw. Adressen in Form von <a href=http://www.adresse.de>Adressentext</a>. Dies soll umgeformt werden in einen PHP-Befehl [makelink("http://www.adresse.de","Adressentext");], der dann direkt ausgeführt werden soll. In der Hoffnung, eine Lösung zu finden Nico <schnipp> function makelink($url, $text) { start(); // startet MySQL $web = trim ($url); $query = mysql_query("SELECT id FROM redir_url WHERE url='$web'"); if(mysql_num_rows($query)>0) { $row=mysql_fetch_array($query); $id = $row["id"]; } else { $ok = FALSE; while ($ok == FALSE) { $id = md5 (uniqid (rand())); $query = mysql_query("SELECT id FROM redir_url WHERE id ='$id'"); if (mysql_num_rows($query)==0) $ok = TRUE; } mysql_query("INSERT INTO redir_url ( id, url ) VALUES ( '$id', '$url')"); } echo "<a href=\"".DATEINAME."?id=".$id."\" target=\"_blank\">".$text."</a>"; } // goto schickt zur URL, die mit $id verknuepft ist function goto($id) { start(); // startet MySQL $moment = time(); mysql_query("UPDATE redir_url SET sum_visit=sum_visit+1, last_visit='$moment' WHERE id='$id'"); $url = mysql_query("SELECT url FROM redir_url WHERE id='$id'"); $url = mysql_fetch_array($url); $web = $url[0]; // echo "Datei: ".$web; header("Location: http://".$web ); exit(); die(); } // wenn $id per GET uebergeben, goto.... ausfuehren if (isset($_GET["id"])) goto($_GET["id"]); if (isset($HTTP_GET_VARS["id"])) goto($HTTP_GET_VARS["id"]); </schnapp>
php::bar PHP Wiki - Listenarchive