Seite 1 von 2
preg_match
Verfasst: Do Mär 18, 2010 9:55 pm
von naums
Ich will mithilfe von preg_match eine Internetadresse darauf prüfen lassen ob sie "http://" am anfang hat, oder nicht.
Ich bin soweit gekommen:
Code: Alles auswählen
if (preg_match('@^(?:http://)?([^/]+)@i', $src, $quelle))
{
die("Übereinstimmung");
}
else
{
die("nichts");
};
Der Code gibt IMMER "Übereinstimmung" aus. $src hat folgenden Inhalt:
http://luckybogey.files.wordpress.com/2 ... bilde.jpeg Das ist nur ein beispielbild und wird nicht auf meine Seite kommen. Wo hab ich nen Denkfehler, was mach ich falsch, wie müsste das richtig lauten, und HÄ?
Re: preg_match
Verfasst: Do Mär 18, 2010 10:58 pm
von Xin
Was spricht die schnellere Alternative
Code: Alles auswählen
if( strpos( "http://", $quelle ) == 0 )
{
die( "Yepp" );
}
else
{
die( "Nopes" );
}
(Code nicht getestet)
Re: preg_match
Verfasst: Do Mär 18, 2010 11:05 pm
von Kerli
Du hast den Regex-Ausdruck scheinbar von
http://php.net/manual/de/function.preg-match.php. Am Besten lies zuerst einmal genau was dort steht, was dieser Ausdruck den tut
Am Einfachsten ist es wenn du parse_url verwendest und schaust ob 'scheme' gesetzt ist. Oder du schaust einfach ob die ersten Zeichen deiner Url http:// sind. Dazu brauchst du eigentlich keine regulären Ausdrücke.
/* edit: Siehe Xin
*/
Re: preg_match
Verfasst: Fr Mär 19, 2010 4:05 pm
von naums
ihr verunsichert mich: Xin Dein Code hat das Problem dass IMMER "Yepp" rauskommt.. und Kerli: parse_url... muss ich mir mal anschaun.
Re: preg_match
Verfasst: Fr Mär 19, 2010 4:23 pm
von Xin
naums hat geschrieben:ihr verunsichert mich: Xin Dein Code hat das Problem dass IMMER "Yepp" rauskommt.. und Kerli: parse_url... muss ich mir mal anschaun.
PHP ist auch Schrott... Quelle und http sind vertauscht, also findet er es NIE. Da false aber == 0 ist, gibt er sein okay, WEIL es nicht okay ist.
(Code ist wieder nicht getestet)
Code: Alles auswählen
$result = strpos( $quelle, "http://" );
$result = ($result == 0) && ( result !== FALSE ); // PHP suxx
if( $result )
{
die( "Yepp" );
}
else
{
die( "Nopes" );
}
Re: preg_match
Verfasst: Fr Mär 19, 2010 4:29 pm
von naums
Is PHP zu doof dazu?
Code: Alles auswählen
$result = strpos( $quelle, "http://" );
$result = ($result == 0) && ( result !== FALSE );
if($result)
{
die( "Yepp" );
}
else
{
die( "Nopes" );
}
bringt immer Yepp
und
Code: Alles auswählen
if(strpos( $quelle, "http://" ))
{
die( "Yepp" );
}
else
{
die( "Nopes" );
}
bringt immer Nopes.... is doch sinnlos... -.-
Re: preg_match
Verfasst: Fr Mär 19, 2010 4:39 pm
von Xin
naums hat geschrieben:Is PHP zu doof dazu?
Nein, aber PHP erlaubt alle Fragen, alle Fragen haben auch Antworten und wer blödsinnige Fragen stellt, bekommt bei PHP nicht einen auf den Sack, sondern eine blödsinnige Antwort.
$result = ($result == 0) && (
$result !== FALSE );
Hab's grade ausprobiert: Funktioniert.
Das ist der Scheiß an PHP... der Fehler ist leicht zu übersehen, PHP typisch und führt zu keiner Warnung oder gar einem Fehler, nur zu unerwünschten Ergebnissen, die man im ersten Moment vielleicht nichtmals sieht.
Re: preg_match
Verfasst: Fr Mär 19, 2010 4:45 pm
von naums
hm... jetzt gehts. Ich hab den Fehler ja auch net gesehn.... doofe Sache das.
UPDATE:
folgender Code sollte ja jetzt eig. "http://"+(die URL) in die Variable $quelle schreiben. Tuts nur leide NIE, weder wenn http:// dran steht, noch wenns nicht da steht. Warum net?
Code: Alles auswählen
$result = strpos( $src, "http://" );
$result = ($result == 0) && ($result !== FALSE );
if($result)
{
$quelle=$src;
}
else
{
$quelle='http://'.$src;
};
Re: preg_match
Verfasst: Fr Mär 19, 2010 5:02 pm
von Xin
naums hat geschrieben:hm... jetzt gehts. Ich hab den Fehler ja auch net gesehn.... doofe Sache das.
UPDATE:
folgender Code sollte ja jetzt eig. "http://"+(die URL) in die Variable $quelle schreiben. Tuts nur leide NIE, weder wenn http:// dran steht, noch wenns nicht da steht. Warum net?
Darauf habe ich keine Antwort, vielleicht wären
weiterführende Informationen sinnvoll, z.B. was denn stattdessen in $quelle steht.
Re: preg_match
Verfasst: Fr Mär 19, 2010 5:40 pm
von naums
$src ist die Adresse. In diesem Fall habe ich "wikimedia.org" genommen.
In $quelle sollte also nun "
http://wikimedia.org" stehen, da ja das "http://" in $src fehlt, sollte also die if an die richtige Stelle springen.
Stattdessen steht in $quelle nur "wikimedia.org".