online 1
gast (50)

/ Forum / Skripte(PHP,ASP,Perl...)

Skripte(PHP,ASP,Perl...)Skripte(PHP,ASP,Perl...)

Fragevon Uesch vom 24.02.2020, 19:37 Options

Lösung

Variable durchsuchen

Hallo allerseits,

wie kann ich eine Variable (zirka 50 aneinandergereihte Zeichen) nach einer bestimmten Zeichenfolge durchsuchen?
Habe die Variable $greek, welche ich nach %09 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:
$String = $_GET["greek"];
$finden   = '%09';
$pos = strpos($String, $finden);
if ($pos === true) {


Wieso findet er da rein gar nichts?

Gruß,

Üsch


Antwort schreiben

Antwort 1 von Rangoo vom 24.02.2020, 19:49 Options

'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
if ($pos !== FALSE)

lauten.

Antwort 2 von Uesch vom 24.02.2020, 20:09 Options

Danke erstmal.
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 vom 24.02.2020, 20:14 Options

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:
//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()[i]/*aus C++*/!="0") goto start;
i++;
if(greek.c_str()[i]!="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 vom 24.02.2020, 20:15 Options

hä? wo sind denn jetzt die code tags hin?? in der vorschau waren sie noch da...
sry

Antwort 5 von Rangoo vom 24.02.2020, 20:34 Options

Also bei mir wird bei obigem Code von dir Irgendwas ausgegeben.

Antwort 6 von son_quatsch vom 25.02.2020, 14:51 OptionsLösung

Lösung
$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 vom 25.02.2020, 15:36 Options

Du hast Recht, ist ja eg klar.

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!

Ähnliche Themen

Ganze Datei durchsuchen
woher  28.08.2007 - 57 Hits - 2 Antworten

Tabellenblätter durchsuchen
Camillo  20.11.2007 - 122 Hits - 6 Antworten

tool zum eine webseite durchsuchen
spock121  04.12.2007 - 137 Hits -

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Thu Jan 8 21:07:44 2026