Supportnet / Forum / Skripte(PHP,ASP,Perl...)
Variable durchsuchen
Frage
Hallo allerseits,
wie kann ich eine Variable (zirka 50 aneinandergereihte Zeichen) nach einer bestimmten Zeichenfolge durchsuchen?
Habe die Variable $greek, welche ich nach [b]%09[/b] durchsuchen möchte. Habe alles versucht: Mit eregi (dabei wird dann aber nicht nach %09, sondern nur nach dem Prozentzeichen gesucht). Habe es auch mit strstr, strpos und preg_match versucht, aber nichts hat funktioniert.
Beispiel:
[code]$String = $_GET["greek"];
$finden = '%09';
$pos = strpos($String, $finden);
if ($pos === true) {[/code]
Wieso findet er da rein gar nichts?
Gruß,
Üsch
Antwort 1 von Rangoo
'n Abend!
PHP versucht an möglichst vielen Stellen, Programmierer zu verwirren.
Die Methode strpos kann nur korrekt auf FALSE prüfen, nicht jedoch auf TRUE. Entsprechend muss deine Bedingung interessanterweise
lauten.
PHP versucht an möglichst vielen Stellen, Programmierer zu verwirren.
Die Methode strpos kann nur korrekt auf FALSE prüfen, nicht jedoch auf TRUE. Entsprechend muss deine Bedingung interessanterweise
if ($pos !== FALSE) lauten.
Antwort 2 von Uesch
Danke erstmal.
Aber leider trotzdem kein Ergebnis.
Also:
Aber leider funzts so nicht.
Aber leider trotzdem kein Ergebnis.
Also:
$greek = "%09%26%23967%3B%26%23959%3B%";
$String = $greek;
$finden = '%09';
$pos = strpos($String, $finden);
if ($pos !== false) {
echo "Irgendwas";
}Aber leider funzts so nicht.
Antwort 3 von Elefunty
ich würde es folgendermaßen machen:
versuch doch erstmal das Prozentzeichen zu finden. wenn du dieses hast, nehme die Position dessen und inkrementiere sie. nun prüfe, ob an dieser stelle eine 0 ist. wenn nein, suche nach dem nächsten prozent, wenn ja, prüfe, ob das nächste zeichen eine neun ist.
in Pseudocode (ich kann leider kein PHP, nur etwas C++) etwa so:
ach mist, jez isses doch mehr C++ als Pseudocode geworden, hoffe du blickst es trotzdem :P
Ele
versuch doch erstmal das Prozentzeichen zu finden. wenn du dieses hast, nehme die Position dessen und inkrementiere sie. nun prüfe, ob an dieser stelle eine 0 ist. wenn nein, suche nach dem nächsten prozent, wenn ja, prüfe, ob das nächste zeichen eine neun ist.
in Pseudocode (ich kann leider kein PHP, nur etwas C++) etwa so:
//variablen
int position;
string greek;
//algorithmus
:start //sprungmarke
position = GetPositionOfACharacter(greek,"%");
//keine wirkliche Funktion, nur ausgedacht, da müsstest du eine php entsprechung finden
position++; //inkrementieren
if(greek.c_str()/*aus C++*/!="0") goto start;
i++;
if(greek.c_str()!="9")goto start;
//man müsste jetzt noch abfangen falls nichts gefunden wird
say("Die Zeichenfolge %09 beginnt bei " && IntToStr(i-2)&& " und endet bei "&& IntToStr(i)&&"!");
ach mist, jez isses doch mehr C++ als Pseudocode geworden, hoffe du blickst es trotzdem :P
Ele
Antwort 4 von Elefunty
hä? wo sind denn jetzt die code tags hin?? in der vorschau waren sie noch da...
sry
sry
Antwort 5 von Rangoo
Also bei mir wird bei obigem Code von dir Irgendwas ausgegeben.
Antwort 6 von son_quatsch
$gesamter_text= '%09%26%23967%3B%26%23959%3B%';
$zu_finden= '%09';
if (($pos= strpos($gesamter_text, $zu_finden))!== false) {
echo 'Gefunden an Stelle '. $pos;
}Wenn du das ganze aber mit $_GET statt einer Konstante machst, dann lass dir den Inhalt davon vorher aber mal ausgeben - gut möglich, dass %09 automatisch schon in ein Zeichen konvertiert wurde (nennt sich decodeURI)
Antwort 7 von Uesch
Du hast Recht, ist ja eg klar.
Habs nun also so gelöst:
Danke!
Habs nun also so gelöst:
$gesamter_text= $_GET["greek"];
$var_encode = rawurlencode($gesamter_text);
$zu_finden= '%09';
if (($pos= strpos($var_encode, $zu_finden))!== false) {Danke!

