PHP strpos prüft nicht richtig nach Inhalt

Sarius87

Banned
Registriert
Mai 2016
Beiträge
888
hallo, ich will prüfen ob ein String meine seite mit ordner beinhaltet:

PHP:
if(strpos($_POST['origlink'], 'meineseite.de/ordner')==true)
{
	echo $_POST['origlink'];
}else{
	echo "alles richtig.";
}

wenn die POST-anfrage jetzt aber meineseite.de/ordner beinhaltet, erhalte ich "alles richtig", doch wieso denn ?? wenn ich jetzt den . oder das / in der Abfrage weglasse und dann die eingabe ändere erhalte ich die POST eingabe, wieso ist der . und das / ein problem bitteschön ?
 
Schau doch mal bitte:
http://de2.php.net/manual/de/function.strpos.php

Gibt die Position als Integerwert zurück. Wurde needle nicht gefunden, gibt strpos() den boolean-Wert FALSE zurück.

Diese Funktion kann sowohl das boolsche FALSE zurückliefern, als auch einen nicht-boolschen Wert, welcher zu FALSE ausgewertet wird. Weitere Informationen entnehmen Sie bitte dem Abschnitt über die boolschen Typen. Benutzen Sie deshalb den === Operator, um den Rückgabewert dieser Funktion zu überprüfen.

Die Rückgabe von strpos ist die Position 0 (!).
PHP:
0 == true # => false => echo "alles richtig.";

Bitte dann eher sowas nutzen:
PHP:
if(strpos($_POST['origlink'], 'meineseite.de/ordner') !== false)

Beispiel #2 auf der PHP-Seite trifft hier zu ;)

Ich weiß nicht genau was du damit vorhast, aber vielleicht könnte dir SwitchCase helfen.
 
Zuletzt bearbeitet:
Kann es sein, dass du eher sowas wie preg_match suchst?

PHP:
   $origlink = $_POST['origlink'];

    if(preg_match("/$origlink/", "meineseite.de/ordner"))
    {
    	echo "Es gibt einen Treffer.";
    }else{
    	echo "Es gibt keinen Treffer.";
    }
 
Zuletzt bearbeitet:
Eagle-PsyX- schrieb:
@Tama89
Allgemein sollte man immer reguläre Ausdrücke vermeiden wo es geht, denn die Ausführung dieser sind immer (verhältnismäßig) sehr leistungsintensiv
Nicht unbedingt. In allen nichttrivialen Fällen, wo man über das simple Prüfen von "da oder nicht da" hinausgehen muß, sind RE möglicherweise a) prägnanter zu formulieren und natürlich b) viel flexibler bei späteren Modifikationen. Allerdings muß man sie auch wirklich verstehen, sonst richtet man mehr Schaden als Nutzen an. Und daran hängt es meist.
 
Zurück
Oben