nico: in $var "nein" vorhanden?

Hey,

wie kann ich testen, ob in einer Variable (z.b. $var) z.B. das Wort "nein" vorhanden ist?

Danke

  1. Hi,

    wie kann ich testen, ob in einer Variable (z.b. $var) z.B. das Wort "nein" vorhanden ist?

    mit strpos().

    mfG,
    steckl

    1. Danke Steckl!

    2. Hi,

      wie kann ich testen, ob in einer Variable (z.b. $var) z.B. das Wort "nein" vorhanden ist?

      mit strpos().

      Das findet ein "nein" auch in "hinein" und "Wanneneinlauf". Wenn extakt das Wort "nein" gesucht ist, muß die Suche Wortgrenzen berücksichtigen, das ist mit Regular Expressions am leichtesten zu coden.

      Alexander

      1. Hallo Alexander,

        Regular Expressions sind immer eine schweres Geschuetz, das man nur mit Bedacht benutzen sollte. Je nachdem, wie der zu untersuchende String strukturiert ist, und meistens weiss man das ja ziemlich genau, koennte man ein strpos() auch auf ' nein ', "nein\n", "\nnein usw. anwenden. Natuerlich gibt es eine Grenze, an der Regular Expressions sinnvoller als Stringfunktionen sind, aber wie gesagt, man sollte sich erst einmal ein paar Beispielstrings anschaeuen, bevor man sich fuer den einen oder anderen Weg entscheidet.

        Gruß,

        Dieter

        1. Regular Expressions sind immer eine schweres Geschuetz,

          Ich wuste gar nicht, dass PHP *so* übel ist ... ;-)

          das man nur mit Bedacht benutzen sollte. Je nachdem, wie der zu untersuchende String strukturiert ist, und meistens weiss man das ja ziemlich genau, koennte man ein strpos() auch auf ' nein ', "nein\n", "\nnein usw. anwenden.

          Das KO-Kriterium steckt hier im "usw.". Definiere Wortgrenzen. Es gibt mehr als die paar Beispiele oben, wesentlich mehr. Das bringt locker zweistellige, eher dreistellige Kombinationsmöglichkeiten.

          Mal eben einen größeren Haufen *ALLER* möglicher Kombinationen zu tippen und durch PHP auszuprobieren(!) zu lassen ist bestimmt vieeeeeeeeeeeeeel schneller als $text=~/\bnein\b/. ROTFL!

          Natuerlich gibt es eine Grenze, an der Regular Expressions sinnvoller als Stringfunktionen sind, aber wie gesagt, man sollte sich erst einmal ein paar Beispielstrings anschaeuen, bevor man sich fuer den einen oder anderen Weg entscheidet.

          Nein. Wenn nach dem Wort gesucht wird, muß entweder die zu prüfende Variable explizit an Wortgrenzen zerlegt und dann die Ergebnis-Liste nach "nein" durchsucht werden (gestraft mit PHP-Syntax ist das bestimmt lustig) oder man nutzt eine in deutlich schnellerem C-Code geschriebene und auf Suche nach Nadeln in Heuhaufen optimierte State Machine, wie sie sich hinter Regular Expressions verbirgt. Wenn nach den vier Buchstaben irgendwo als Substring gesucht wird, sind REs sicherlich Overkill. Danach war aber nicht gefragt, sondern nach einem Wort im String.

          Wenn wir über eine ernsthaft große Variable reden (Größenordnung Buchtext), ist das linear arbeitende strpos() hart an der Leistungsgrenze. Wenn es nur um eine Aussage geht, ob das Wort oder der Substring vorkommt, gibt es darauf spezialisierte Algorithmen und Datenstrukturen, z.B. Tries.

          Alexander