使用strpos更改变量内容

时间:2015-11-23 10:00:25

标签: php string strpos

我正在尝试删除变量的内容(如果它已经存在于字符串中:

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

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

但是当我测试脚本时,我得到了:

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

我期待结果:

true 
http: //mywebsite.ex

我哪里错了?

2 个答案:

答案 0 :(得分:3)

使用strpos(),您只能检测$b中某处$a是否出现,但它不会将其删除。要删除它,您可以将strpos()的返回值分配给变量,然后使用substr_replace()$b中删除$a,例如

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

使用此功能,您将删除$b$a的第一次出现。如果您想删除所有出现的内容,请使用str_replace(),例如

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

答案 1 :(得分:1)

我不知道你要做什么,但我认为你有一些逻辑问题。

更新。现在好了,我知道你想要什么;),我想 @ Rizier123 :你把它钉了。

您在代码中所做的是:

strpos():如果if ( strpos( $a, $b ) !== false )http://mywebsite.ex/http://)位于$b http://mywebsite.ex/http://http://mywebsite.ex,则$a条件会询问您}) //这总是正确的,因为你将$a = $b . "http.....这个字符串联合起来,所以$b总是在$a

试试这个并看一下输出:

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