strpos question

Do you have a question? Post it now! No Registration Necessary.  Now with pictures!

Threaded View
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.

$dn = "ABC-DEF";

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

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

Re: strpos question

drec wrote:

Quoted text here. Click to load it

Yes, read the manual. :-)

It is such a common mistake shouts a warning when describing the  

Read this:


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.

Erwin Moller

Re: strpos question

drec kirjoitti:
Quoted text here. Click to load it


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.

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  

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

Site Timeline