php stripos rückgabe auswerten

Diskutiere mit über: php stripos rückgabe auswerten im Web-Programmierung Forum

  1. sir.hacks.alot

    sir.hacks.alot Thread Starter MacUser Mitglied

    Beiträge:
    2.406
    Zustimmungen:
    113
    Registriert seit:
    10.03.2005
    Ich habe folgendes Problem, ich will aus einer Liste mit Kundennamen die ersten drei Buchstaben abschneiden wenn die fa. oder Fa. sind also verwende ich die Funktion
    PHP:
     $pos=stripos($Name,'fa.')
    . Wenn ich mir eine Liste am ausgeben lasse in der ich jedem Kunden die Position von fa zuordne sehe ich das alles korrekt arbeitet. Bei Kunden wo nichts steht steht auch keine Zahl bei kunden wo das fa auftaucht steht eine null. Leider funktioniert die Abfrage
    PHP:
    if($pos===0)
    nicht korrekt, sie liefert auch true, wenn statt einer null nichts in der Variable ist. Wie werte ich nun die Rückgabe von stripos so aus, daß ich den Unterschied zwischen FALSE und 0 erkennen kann?
     
  2. oneOeight

    oneOeight MacUser Mitglied

    Beiträge:
    46.773
    Zustimmungen:
    3.629
    Registriert seit:
    23.11.2004
    auf false/true kannst du mit if($pos) testen...

    ist das oben eigentlich ein tippfehler mit den 3 gleich-zeichen?
    vergleiche haben nur 2...
     
  3. simusch

    simusch MacUser Mitglied

    Beiträge:
    2.221
    Zustimmungen:
    186
    Registriert seit:
    27.09.2004
    === ist auch möglich, ist glaub ich, wenn es haargenau stimmen soll... auch der Datentyp

    also wenn z.b.

    $var = "1";

    und du überprüfst:

    if($var == 1)

    wird es TRUE geben aber

    if($var === 1)

    wird es FALSE geben, da nicht auf einen String überprüft wird.



    und zu dem ursrpünglichen Problem:

    wenn du es mit

    if($pos != false)

    oder eben nur mit 2 = machst

    if($pos == 0)

    klappts dann vielleicht?
     
  4. sir.hacks.alot

    sir.hacks.alot Thread Starter MacUser Mitglied

    Beiträge:
    2.406
    Zustimmungen:
    113
    Registriert seit:
    10.03.2005
    nein mit == gehts leider nicht, das war mein erster ansatz, habe aber an diversenstellen die empfehlung gelesen mit === zu vergleichen.
     
  5. sir.hacks.alot

    sir.hacks.alot Thread Starter MacUser Mitglied

    Beiträge:
    2.406
    Zustimmungen:
    113
    Registriert seit:
    10.03.2005
    habe dann noch einweig rumgespielt mit:
    PHP:
    if(is_int($pos)&&$pos==0)
    geht es merkwürdigerweise. Es scheint so als würde bei mir der Operator === nicht funktionieren, denn der sollte einen Typunterschied zwischen 0 und FALSE bemerken. Ich habe das ganze jetzt unter MAMP auf meinem Macbook getestet, da ging der vergleich mit === einwandfrei, der mit == schlug wie erwartet fehl. Meine andere Testumgebung für die Applikation ist xampp in der neuesten Version auf Ubuntu Edgy Eft und da läufts halt nicht. Ich bin echt ratlos, aber mein "Workaround tuts ja". Wenn jemand Abhilfe wüsste wäre ich natürlich sehr dankbar.

    Edit:

    Jetzt wirds richtig merkwürdig
    PHP:
    if($pos===(int)0)
    tuts. Hatte halt gedacht, daß die 0 vielleicht fälschlicherweise als anderer Datentyp als Int behandelt wird, aber:
    PHP:
    echo var_dump(0);
    echo 
    gettype(0);
    gibt int(0)integer zurück. Jetzt frage ich mich doch ernsthaft wo der Unterschied zwischen ===(int)0 und ===0 besteht
     
    Zuletzt bearbeitet: 14.11.2006
  6. goddess

    goddess MacUser Mitglied

    Beiträge:
    229
    Zustimmungen:
    10
    Registriert seit:
    26.02.2006
    Lt. PHP-Referenz zu strpos

    Code:
    Returns the numeric position of the first occurrence of needle in the 
    haystack string. Unlike the strrpos() before PHP 5, this function can take a full
    string as the needle parameter and the entire string will be used.
    
    [B]If needle is not found, strpos() will return boolean FALSE.[/B]
    Ergo musst du auf false überprüfen, wenn du wissen willst, ob 'fa.' nicht vorgekommen ist.

    Der === Operator nennt sich 'Identical' und retourniert true wenn $a <-> $b UND vom gleichen Datentyp sind.
     
  7. sir.hacks.alot

    sir.hacks.alot Thread Starter MacUser Mitglied

    Beiträge:
    2.406
    Zustimmungen:
    113
    Registriert seit:
    10.03.2005
    ja ich weiss, das ist ja auch garnicht das problem. Das Problem ist, daß man bei der Abfrage mit===0 eigentlich den fall false und 0 unterscheiden können müsste, da FALSE boolean ist 0 aber int(Was ja auch von stipos zurückgegeben wird wenn nicht false). Die if-Abfrage müsste also bei einem FALSE abweisen und bei einer 0 reinlassen. Das Problem ist, daß die Abfrage bei false und 0 abweist da er die 0 nicht als int anerkennt, obwohl sie es ist. Aber nur auf meinem Linuxrechner, auf dem Mac macht die if-Abfrage ja genau was sie soll. Nur über false kann ich meine Abfrage ja nicht realisieren, da ja eigentlich nur der Fall 0 interessant ist. Nicht False bedeutet aber das fa. an jeder Position stehen könnte.

    Aber was solls, ich habe das Problem ja in den Griff bekommen.
     
    Zuletzt bearbeitet: 15.11.2006
  8. Gunter_S

    Gunter_S MacUser Mitglied

    Beiträge:
    150
    Zustimmungen:
    3
    Registriert seit:
    15.03.2004
    also ich mach das immer folgendermaßen:
    PHP:
    if (($pos stripos($zeichenkette'suchtext')) !== false) {
        echo 
    "Zeichenkette an Stelle ".$pos." gefunden\n";
    } else {
        echo 
    "Zeichenkette leider nicht gefunden\n";
    }
    == bzw. != vergleicht auf "Ähnlichkeit"
    === bzw. !== vergleicht auf Gleichheit, also zum Beispiel:

    PHP:
    // richtig
    == false
    // falsch, weil nicht Typengleich
    === false


    $str1 
    "a";
    $str2 "a";
    // richtig
    $str1 == $str2
    // falsch, weil nicht gleicher "Pointer"
    $str1 === $str2
     
    Zuletzt bearbeitet: 15.11.2006
  9. falkgottschalk

    falkgottschalk MacUser Mitglied

    Beiträge:
    24.026
    Zustimmungen:
    1.598
    Registriert seit:
    22.08.2005
    ...nebenbei bemerkt fängt der Pfusch doch schon viel früher an: beim Reinschreiben der Anrede in das Namensfeld.
    Das sollten doch nun wirklich getrennte Felder sein, und natürlich sollten die Anreden in einer eigenen Tabelle im Klartext stehen und per UID verknüpft werden.
     
  10. sir.hacks.alot

    sir.hacks.alot Thread Starter MacUser Mitglied

    Beiträge:
    2.406
    Zustimmungen:
    113
    Registriert seit:
    10.03.2005
    Ja schon, aber da habe ich keinen Einfluss drauf.
     
Die Seite wird geladen...
Ähnliche Themen - php stripos rückgabe Forum Datum
Werte der gleichen Schlüssel summieren (assoziativen Array) Web-Programmierung 25.08.2016
einfaches php. emailformular bei strato Web-Programmierung 08.08.2015
PHP Array in Google Maps Wegpunkte umwandeln Web-Programmierung 13.03.2015
PHP Update auf 5.6 im Terminal für Localhost (MAMP und Laravel) Web-Programmierung 12.09.2014
PHP: Nächster Tag auf Deutsch ausgeben Web-Programmierung 23.01.2014

Diese Seite empfehlen

Benutzerdefinierte Suche