Überprüfen Sie, ob eine Zeichenfolge eine bestimmte Teilzeichenfolge nicht enthält [duplicate]

Lesezeit: 3 Minuten

Benutzeravatar von Lucas Matos
Lukas Matos

In SQL haben wir NOT LIKE %string%

Ich muss dies in PHP tun.

if ($string NOT LIKE %word%) { do something }

Ich denke damit lässt sich verfahren strpos()

Kann mir aber nicht erklären wie…

Ich brauche genau diesen Vergleichssatz in gültigem PHP.

if ($string NOT LIKE %word%) { do something }

  • Ich habe den Titel aktualisiert, um die Frage besser widerzuspiegeln. Die genaue Semantik des Wortabgleichs sollte ebenfalls dargelegt werden. Es kann besser sein, es zu verwenden \bword\b oder \bword|word\b in bestimmten Situationen.

    Benutzer166390

    2. Februar 2012 um 20:05 Uhr


Benutzeravatar von Marc B
Markus B

if (strpos($string, $word) === FALSE) {
   ... not found ...
}

Beachten Sie, dass strpos() unterscheidet zwischen Groß- und Kleinschreibung, wenn Sie eine Suche ohne Berücksichtigung der Groß-/Kleinschreibung wünschen, verwenden Sie stripos() stattdessen.

Beachten Sie auch die ===, was einen strengen Gleichheitstest erzwingt. strpos KANN ein gültiges zurückgeben 0 wenn die ‘Nadel’-Saite am Anfang des ‘Heuhaufens’ steht. Indem Sie eine Überprüfung auf ein tatsächliches boolesches False (auch bekannt als 0) erzwingen, beseitigen Sie dieses False-Positive.

  • Beachten Sie, dass %word% ein Platzhalter ist, keine Variable … der $string enthält eine IP-Adresse in Zeichenform, wie $string = 123.456.789.100, und ich möchte diejenigen ausschließen (NICHT LIKE), die mit 123.456% beginnen

    – Lukas Matos

    2. Februar 2012 um 20:06 Uhr


  • @LucasMatos Dann $word = "word" dann … obwohl es ein Platzhalter ist, ist es eine sehr triviale Verwendung (“schwebende Enden”) strpos deckt (und tatsächlich ist es Weil davon das strpos funktioniert hier!). $word = "a?b" würde mit diesem Ansatz nicht funktionieren, wenn ? sollte zum Beispiel “mit jedem Zeichen übereinstimmen”.

    Benutzer166390

    2. Februar 2012 um 20:10 Uhr


  • @LUcas: hätte das dann in der Frage sagen sollen. Einfache Beispiele erhalten einfache Antworten.

    – Markus B

    2. Februar 2012 um 20:14 Uhr

  • so sieht mein Satz aus if ($viewer_ip AND $viewer_ip != $last_viewer_ip AND strpos($viewer_ip, 66.249) === false) { ich möchte googles bot ips von meinem zähler ausschließen. Ich muss nur warten, bis einer von ihnen meine Website erreicht, um zu überprüfen, ob sie ordnungsgemäß funktioniert. danke euch allen

    – Lukas Matos

    2. Februar 2012 um 20:25 Uhr

  • Seien Sie sehr vorsichtig mit einer solchen “nackten” Gleitkommazahl. PHP kann es mit anderen nachgestellten Dezimalstellen stringifizieren, als Sie erwarten würden. Erzwingen Sie, dass es eine Zeichenfolge mit ist 66.249 stattdessen, und nicht, dass es Dinge wie finden wird 166.249. Wenn das am Anfang der Zeichenfolge steht, können Sie das ändern === zu einem einfachen > stattdessen, um alle Übereinstimmungen zu Beginn auszuschließen.

    – Markus B

    2. Februar 2012 um 21:46 Uhr


Verwenden strpos. Wenn die Zeichenfolge nicht gefunden wird, kehrt sie zurück falsesonst etwas, das nicht ist false. Stellen Sie sicher, dass Sie einen typsicheren Vergleich verwenden (===) als 0 kann zurückgegeben werden und es ist ein falscher Wert:

if (strpos($string, $substring) === false) {
    // substring is not found in string
}

if (strpos($string, $substring2) !== false) {
    // substring2 is found in string
}

use 

if(stripos($str,'job')){
   // do your work
}

  • Dies wird scheitern, wenn job ist die führenden drei Charaktere von $str. Wenn Sie dieses unerklärliche Snippet korrigieren, wird es auf dieser Seite zu einer doppelten Antwort. Dieser Beitrag kann sicher entfernt werden.

    – mickmackusa

    22. April 2021 um 2:42 Uhr

<?php
//  Use this function and Pass Mixed string and what you want to search in mixed string.
//  For Example :
    $mixedStr = "hello world. This is john duvey";
    $searchStr= "john";

    if(strpos($mixedStr,$searchStr)) {
      echo "Your string here";
    }else {
      echo "String not here";
    }

Hängt irgendwie von Ihren Daten ab, oder? strpos(‘eine törichte Idee’, ‘Narr’) zeigt eine Übereinstimmung, ist aber möglicherweise nicht das, was Sie wollen. Wenn es um Worte geht, vielleicht

preg_match(“!\b$word\b!i”,$satz)

ist klüger. Nur ein Gedanke.

  • Was ist, wenn $word enthält Sonderzeichen? Diese Antwort zeigt, wie man ein ganzes Wort findet. Die Frage lautete, wie festgestellt werden kann, ob eine Teilzeichenfolge in einer Eingabezeichenfolge nicht vorhanden ist.

    – mickmackusa

    31. Januar um 4:13


  • Was ist, wenn $word enthält Sonderzeichen? Diese Antwort zeigt, wie man ein ganzes Wort findet. Die Frage lautete, wie festgestellt werden kann, ob eine Teilzeichenfolge in einer Eingabezeichenfolge nicht vorhanden ist.

    – mickmackusa

    31. Januar um 4:13


1444930cookie-checkÜberprüfen Sie, ob eine Zeichenfolge eine bestimmte Teilzeichenfolge nicht enthält [duplicate]

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy