Mirko Brombin
Mirko Brombin

Reputation: 1012

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?

Upvotes: 2

Views: 226

Answers (2)

swidmann
swidmann

Reputation: 2792

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;
}

Upvotes: 1

Rizier123
Rizier123

Reputation: 59701

With strpos() you only detect if $b occurs somewhere in $a, but it doesn't remove it. To remove it you can assign the return value of strpos() to a variable and then cut out $b from $a with substr_replace(), e.g.

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

With this you will remove the first occurence of $b in $a. And if you would want to remove all occurences, just use str_replace(), e.g.

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

Upvotes: 3

Related Questions