Search code examples
phpstringstrpos

Using strpos to change variable content


I'm trying to remove the contents of a variable if it already exists in a string:

$baseurl = "http://mywebsite.ex/";
$b = $baseurl."http://";
$a = $b."http://mywebsite.ex";

if (strpos($a,$b) !== false) 
{
    echo 'true <br>';
    $baseurl = "";
    echo $a;
}

But when I test the script I get:

true 
http://mywebsite.ex/http://http://mywebsite.ex

I expected the result:

true 
http: //mywebsite.ex

Where am I wrong?


Solution

  • I don't know what you are trying to do, but I think you have some logical problems.

    Update. OK now I know what you wanted ;), I think @Rizier123: you nailed it.

    What you do in you code is:

    strpos(): you are asking in this if ( strpos( $a, $b ) !== false ) condition if $b ( http://mywebsite.ex/http:// ) is in $a ( http://mywebsite.ex/http://http://mywebsite.ex ) // this is always true because you concated the string like $a = $b . "http....., so $b is always in $a

    Try this and take a look at the output:

    $baseurl = "http://mywebsite.ex/";
    $b = $baseurl . "http://"; // b looks like http://mywebsite.ex/http://
    var_dump( $b );
    $a = $b . "http://mywebsite.ex"; // a looks like http://mywebsite.ex/http://http://mywebsite.ex
    var_dump( $a);
    
    
    // strpos: you asking in this condition if $b ( http://mywebsite.ex/http:// ) is in $a ( http://mywebsite.ex/http://http://mywebsite.ex )
    // this is always true because you concated the string like $a = $b . "http....., so $b is always in $a
    if ( strpos( $a, $b ) !== false ) {
        echo 'true <br>';
        $baseurl = "";
        echo $a;
    }