als Klickbaren Link Auslesen

Zu der anfänglichen Frage (Links suchen und umwandeln):
PHP:
<?php

// Pfad zur Datei
$FilePath = 'Log.txt';

// Dateiinhalt holen
$FileContents = file_get_contents($FilePath);

/*
 * Am Start muss http, https, ftp oder file stehen 
 * Darauf folgt ://
 * Dann beliebig viele der folgenden Zeichen: - A-Z 0-9 + & @ # / % ? = ~ _ | ! : , . ;
 * Zum Schluss eines der folgenden Zeichen: - A - Z 0-9 + & @ # / % = ~ _ |
 * Resultat: Er findet Links in einem String und ersetzt sie mit dem HTML-Tag. 
 */
$LinkedContents = preg_replace('/\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|]/i', '<a href="$0">$0</a>', $FileContents);

// Ausgeben
echo $LinkedContents;

// In Zeilen splitten
$Lines = split("\n", $LinkedContents);
?>

Nur der Vollständigkeit halber.
 
JOa danke dir!...

Muss jetzt echt mal ein Dickes Lob hier Aussprechen. Ich kenne Foren (die ich nicht nenne ^^) da wird man nicht so gut behandelt wenn man Fragen zu php hat. Also macht weiter so ...Eure User Zahlen sprechen ja für sich hihi


EDIT:

Hy @ Danielku15,

also ich habe das nun mal getestet. GEHT auch Wunderbar. Nur Haut der mir alle Zeilen IN EINE Spalte und nicht wie soll ZEILE für ZEILE in Palte für Spalte <td>$LinkedContents</td> und das ist dann ein Mega block hehe


Mfg...Hangrefer
 
Zuletzt bearbeitet:
Wie du sicher schon bemerkt hast, läuft das Ganze über Reguläre Ausdrücke (Regex).
Mit dem entsprechenden Textformat kannst du die Zeilen nach deinen Belieben einlesen.
Aber wie bereits von den anderen Usern erwähnt. Eine Datenbank würde sich hierfür besser anbieten. Aber für Lehrzwecke hab ich mal was für dich ausgearbeitet. Reguläre Ausdrücke werden dir noch oft begegnen. Sie sind wirklich sehr praktisch.

PHP:
<?php

// Pfad zur Datei
$FilePath = 'Log.txt';

// Dateiinhalt holen
$FileContents = file_get_contents($FilePath);

/*
 * Regex zusammenstellen:
 * Datum (00.00.0000 bis 99.99.9999 wird gefunden):
 * (?P<Datum> ... ) --> Den Bereich der der dem Format entspricht in den Arrayindex "Datum" schreiben
 * [0-9]{1,2}       --> 1 oder 2 Zahlen von 0-9
 * \.               --> Ein Punkt
 * Ein Leerzeichen am Schluss
 */
$DateRegex = '(?P<Datum>[0-9]{1,2}\.[0-9]{1,2}\.[0-9]{4}) ';
 
/*
 * Uhrzeit (00.00 bis 99:99 wird gefunden):
 */
$TimeRegex = '(?P<Uhrzeit>[0-9]{2}.[0-9]{2}) ';

/*
 * Url (alle Urlformate mit http, https, ftp und file):
 * Am Start muss http, https, ftp oder file stehen 
 * Darauf folgt ://
 * Dann beliebig viele der folgenden Zeichen: - A-Z 0-9 + & @ # / % ? = ~ _ | ! : , . ;
 * Zum Schluss eines der folgenden Zeichen: - A - Z 0-9 + & @ # / % = ~ _ |
 */
$UrlRegex = '(?P<Link>(?:https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])';

/* 
 * Regex zusammensetzen: 
 * /i --> Groß- und Kleinschreibung wird ignoriert.
 */
$Regex = '/'.$DateRegex.$TimeRegex.$UrlRegex.'/i';

/* 
 * Regex ausführen:
 * Alle gefundenen Zeichenketten in $FileContents welche $Regex entsprechen werden als Array in $Links geschrieben. 
 * PREG_SET_ORDER --> Ordnet die gefundenen Zeichenketten als einzelne Arrayelemente.  
 */
preg_match_all($Regex, $FileContents, $Links, PREG_SET_ORDER);

/*
 * Aufbau von $Links:
 * [0]
 * {
 *    ['Datum'] => '20.01.2008',
 *    ['Uhrzeit'] => '15.45',
 *    ['Link'] => 'http://www.haste-net-gesehen.de'
 * }
 * [1]
 * ...
 */ 
 
// Tabelle starten 
echo '<table cellpadding="2" cellspacing="0" width="400">';
echo '<tr><th>Datum</th><th>Uhrzeit</th><th>Link</th></tr>';
// Alle Links Durchlaufen
foreach($Links as $Link)
{
	// Einzelne Zellen hinzufügen
	echo '<tr>
			  <td>'.$Link['Datum'].'</td>
			  <td>'.$Link['Uhrzeit'].'</td>
			  <td><a href="'.$Link['Link'].'">'.$Link['Link'].'</a></td>
	      </tr>';
}
echo '</table>'
?>
 
Hmm.. Ja okay Danke dir auch dafür.

Ich werde damit jetzt rumspielen so lange bis der Schotter passt. Den in die Textdatei Eingelesen wird nur mit einer $variable in der das Datum, Zeit und die Adresse enthalten ist. So müsste ich ja für Datum, Zeit und Adresse jeweils eine Variabel Schreiben. Aber dann liest der net mehr in die date ein ^^.

Und dann macht es ja erst sind eine Datenbak anzulegen wenn ich 3 Variabel habe. Wo ich dann Aufteilen kann. Aber das ist ja auch net so wilde das es keine Db hat.

Wollte halt den Textdatei inhalt so trennen das es ab http:// eine klickbaren link nachsich zieht ^^

Aber gut ich Teste ^^
 
Zurück