1,php strpos  返回 0,和返回 false 有什么区别?让我郁闷啊,看手册了,没明白过来2, $url1 = '/a/b/c/d/index.php'
$url2 = '/a/b/1111/2222/index.php'请问如何返回  $url2 相对于 $url1 的地址为 ../../c/d/index.php

解决方案 »

  1.   

    php返回0和FALSE是一回事,而返回1,2.....和返回TRUE也是一回事。
      

  2.   

    1 返回0表示,找到字符串的位置是开头.
     返回false表示没有找到字符串.
    2 至于2,得容我想想
      

  3.   

    第一个问题:0和FALSE是一样的(可以这样理解)
    第二个问题:
    可以使用函数str_replace操作,具体如下:
    str_replace($url2,"1111/2222","c/d")
    应该是这样的
      

  4.   

    str_replace函数是替换某个字符串和字符变量的某个字符到另一个字符串,本人文字水平比较菜,可能你不会理解,具体可以访问网站:http://www.php.net/manual/zh/function.str-replace.php
      

  5.   

    第二个$url1 = '/a/b/c/d/index.php';
    $url2 = '/a/b/1111/2222/index.php';$arrUrl = explode('/', $url2);
    $strSearch = "";
    for($i=0;$i< count($arrUrl); $i++)
    {
    if($arrUrl[$i] == "")
     continue;
    $strTemp = $strSearch . "/" . $arrUrl[$i];
    if(strpos($url1, $strTemp) !== 0)
    {
    break;
    }
    else
    {
    $strSearch = $strTemp;
    }
    }
    $strReplace =  preg_replace('/\/[^\/]+/is', "../", $strSearch);
    echo str_replace($strSearch . "/", $strReplace, $url1);
      

  6.   

    第一题:<?phpvar_dump(0 == false);
    var_dump(0 === false);?>0,和false看是怎么比了,这在php手册中也说的很清楚,strpos()函数的返回值要先和false进行===比较来判断是否找到子串。