strpos question

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • drec

    #1

    strpos question

    I am trying to right an if statment using strpos to determine if the
    string exists in the variable, however I seem to be getting the wrong
    effect. Here is my script.

    <?php
    $dn = "ABC-DEF";

    $pos = strpos( $dn, "ABC-DEF" );
    if ( $pos != FALSE )
    {
    echo 'variable contains value';
    }
    else
    {
    echo ' variable does not contain value' ;
    }
    ?>

    It keeps returning does not contain value. I am kinda new to strpos,
    any suggestions?

  • Erwin Moller

    #2
    Re: strpos question

    drec wrote:
    [color=blue]
    > I am trying to right an if statment using strpos to determine if the
    > string exists in the variable, however I seem to be getting the wrong
    > effect. Here is my script.
    >
    > <?php
    > $dn = "ABC-DEF";
    >
    > $pos = strpos( $dn, "ABC-DEF" );
    > if ( $pos != FALSE )
    > {
    > echo 'variable contains value';
    > }
    > else
    > {
    > echo ' variable does not contain value' ;
    > }
    > ?>
    >
    > It keeps returning does not contain value. I am kinda new to strpos,
    > any suggestions?[/color]

    Yes, read the manual. :-)

    It is such a common mistake php.net shouts a warning when describing the
    function.

    Read this:


    Warning

    This function may return Boolean FALSE, but may also return a non-Boolean
    value which evaluates to FALSE, such as 0 or "". Please read the section on
    Booleans for more information. Use the === operator for testing the return
    value of this function.
    I think yours is a typical 0 that evaluates to false.


    Regards,
    Erwin Moller

    Comment

    • Kimmo Laine

      #3
      Re: strpos question

      drec kirjoitti:[color=blue]
      > I am trying to right an if statment using strpos to determine if the
      > string exists in the variable, however I seem to be getting the wrong
      > effect. Here is my script.
      >
      > <?php
      > $dn = "ABC-DEF";
      >
      > $pos = strpos( $dn, "ABC-DEF" );
      > if ( $pos != FALSE )
      > {
      > echo 'variable contains value';
      > }
      > else
      > {
      > echo ' variable does not contain value' ;
      > }
      > ?>
      >
      > It keeps returning does not contain value. I am kinda new to strpos,
      > any suggestions?[/color]

      RTFM: http://php.net/strpos

      Strpos returns the position of $haystack where $needle begins, otherwise
      false if $needle is not found. In this case, the position is zero. When
      you compare integer value zero with boolean value false in loose typed
      language, they match. If you want to strictly compare and distinguish
      the difference between boolean false and integer zero, you need to use
      strict comparison operators.

      Use:
      if ( $pos !== FALSE )

      !== is the type specific strict comparison operator, which checks also
      for variable types as well as values. Then, when you compare boolean
      false to integer zero, they do not match, but false and false will.

      This is all explained in the manual if you'd just care to Read The Fine
      Manual.

      --
      "En ole paha ihminen, mutta omenat ovat elinkeinoni." -Perttu Sirviö
      spam@outolempi. net | Gedoon-S @ IRCnet | rot13(xvzzb@bhg byrzcv.arg)

      Comment

      Working...