我正在尝试删除变量的内容(如果它已经存在于字符串中:
)$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
我哪里错了?
答案 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;
}