url-eingabe-check und Umwandlung in Link!
Sebastian
- php
Hi Alle,
ich bastele gerade an einer Funktion, die Fehler beim eintippe einer URL "merken" soll (nur die gröbsten Fehler) und den String dann in einen Link verwandelt.
Es geht mir eigentlich nicht darum, die Funktion so kurz wie möglich zu halten, sondern im Moment einfach nur darum, dass die Funktion in erster Linie das tut, was ich von ihr will.
Ich hänge da etwas fest.
Ich arbeite mit einer ereg_replace Funktion, die ich im netz gefunden habe, Diese Funktioniert ansich auch recht gut, doch schaffe ich es nicht diese logisch in eine if-Abfrage einzubauen.
Vielleicht ist jemand so freundlich mir zu helfen!?
Hier die Funktion:
<?php
$website = "www.test.de"; // Ausgangsvariable zum Testen
check_url($website);
function check_url($website)
{
//die ersten Zeichen des Strings werden gecheckt!
if (substr($website, 0, 7) != "http://" && substr($website, 0, 4) != "www.")
{
echo "$website ist keine gültige URL!<br /><b>Beispiel: http://www.schoen.de</b>";
$error = 1;
}
//wenn kein http:// am Anfang steht, wird es vorgesetzt,
// denn die ereg replace Funktion erwartet dies!
if (substr($website, 0, 7) != "http://")
{
$website = "http://".$website."<br />";
}
//größtes Problem!!! Ich möchte den "zwischenstand speichern"
$temp = "$website";
if (($website = ereg_replace("[[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/]", "<a href="\0">\0</a>", $website)) == $temp)
{
echo "shit!";
}
echo $website;
if ($website == $temp)
{
echo "$website ist keine gültige URL!<br /><b>Beispiel: http://www.schoen.de</b>";
$error = 1;
}
elseif (!isset($error))
{
echo "$website ist ein Super-URL!";
}
}
?>
Also, ich schaffe es nicht, einen zwischenstand der in $website enthaltenen Zeichenkette einnzufrieren und später mit der veränderten Variable $website zu vergleichen! Gibt es da eine gängige Methode? Ich denke man macht ähnliches öfter in der Programmierung.
Und ... mir geht die Variable $website unterwegs irgenwie verloren, denn das echo am Ende gibt nur " ist eine Super-Url aus!"
Ich verstehe das nicht ganz.
Vielleicht weiß jemand weiter.
Einen freundlichen Gruß sendet euch Sebastian!
PS.
Hier nochmal die Beschreibung der Funktion, die ich benutze:
ereg_replace ( string Suchmuster, string Ersatz, string Zeichenkette)
Anmerkung: Die Funktion preg_replace(), die eine zu Perl kompatible Syntax regulärer Ausdrücke verwendet, ist häufig die schnellere Alternative zu ereg_replace().
Diese Funktion durchsucht Zeichenkette nach Übereinstimmungen mit Suchmuster und ersetzt dann den übereinstimmenden Text durch Ersatz.
Zurückgegeben wird die geänderte Zeichenkette, was auch bedeuten könnte, dass die ursprüngliche Zeichenkette zurückgegeben wird, wenn es keine zu ersetzenden Übereinstimmungen gibt.
Wenn Suchmuster eingeklammerte Teilzeichenketten enthält, darf Ersatz Teilzeichenketten der Form \Ziffer enthalten, die dann durch die Ziffer'ste Teilzeichenkette ersetzt werden. \0 erzeugt den gesamten Inhalt der durchsuchten Zeichenkette. Bis zu neun Teilzeichenketten dürfen verwendet werden. Klammern dürfen geschachtelt werden und werden in diesem Fall anhand der öffnenden Klammern gezählt.
Wenn in Zeichenkette keine Übereinstimmungen gefunden werden, wird Zeichenkette unverändert zurückgegeben.
Hi,
das Problem hat sich inzwischen erledigt!
Gruß
ZAB