php删除部分字符串

时间:2011-06-19 12:37:10

标签: php

为什么这不会删除字符串的http://

$rurl = 'http://www.google.com';
$httpposi = strpos($rurl,'://');
echo $httpposi;
if($httpposi === true) {
$url=substr($rurl, strpos($rurl, '://') + 3);
echo $url;
} else {
$url=$rurl;
echo '3'.$url.'2';
}

echo $url;

5 个答案:

答案 0 :(得分:3)

而不是:

if($httpposi === true) {

你需要:

if($httpposi !== false) {

因为如果在字符串中找到 ,它将返回一个整数的偏移量,并且你正在进行严格的比较,严格来说非零,正整数不等于布尔值价值true

8 == true // true
8 === true // false, because 8 is not a boolean
0 == true // false, but we need to know if the needle is at position 0

这样:

0 !== false // true, string was found
8 !== false // true, string was found
false !== false // false, string was not found

如果在字符串的开头找到序列,则会返回虚假0,因此需要严格比较false才能知道它根本没有找到。< / p>

http://ideone.com/QXBs7

答案 1 :(得分:1)

正如其他一些人已经发布的那样:不要将$httpposi与布尔值进行比较! strpos函数的返回值是一个整数值,如果它已找到出现,但如果找不到,则可以返回false0""传递了字符串。

有关详细信息,请查看PHP.net docs

答案 2 :(得分:1)

或者您可以使用preg_replace来解决问题:

$url=preg_replace('~^https?://~i','','http://www.google.com')

也适用于https。只需删除[s]?如果这不是你想要的。 / i是为了忽略大小写。

答案 3 :(得分:0)

if($httpposi !== false) {

答案 4 :(得分:0)

if($httpposi === true) {更改为if($httpposi) {if($httpposi == true) {,因为$httpposi = 4不是===true