php strpos忽略字符

php strpos忽略字符,php,html,Php,Html,我试图解析一个字符串,但返回的内容不正确,我试图从doc=?中提取问号?幻灯片=?,但我得到 文档id:&doc=9729&slide=214679&#doc=9729&slide=21 幻灯片id:&slide=214679&#doc=9729 字符串: http:/securefinder.com/ajax#u query/delimiter.aspx?q=LNG&f=1.1&doc=9729&slide=214679&doc=9729&slide=214679& 它似乎不接受&作为定界字符

我试图解析一个字符串,但返回的内容不正确,我试图从doc=?中提取问号?幻灯片=?,但我得到

文档id:&doc=9729&slide=214679&#doc=9729&slide=21

幻灯片id:&slide=214679&#doc=9729

字符串:

http:/securefinder.com/ajax#u query/delimiter.aspx?q=LNG&f=1.1&doc=9729&slide=214679&doc=9729&slide=214679&

它似乎不接受&作为定界字符

 <?php

    function from_to($string, $from, $to) {
        //Calculate where each substring is found inside of $string
        $pos_from = strpos($string, $from);
        $pos_to   = strpos($string, $to);


        //The function will break if $to appears before $from, throw an exception.
        if ($pos_from > $pos_to) {

        }

        return substr(
            $string,
            $pos_from, //From where the $from starts (first character of $from)
            $pos_to - $pos_from + strlen($to) //To where the $to ends. (last character of $to)
        );
    }

    $str = "http:/securefinder.com/ajax_query/delimiter.aspx?q=LNG&f=1.1&doc=9729&slide=214679&#doc=9729&slide=214679&";


         $doc_id = from_to($str, 'doc=', '&');
          $slide_id = from_to($str, 'slide=', '&');


echo 'doc id:' . $doc_id ;
echo 'slide id:'. $slide_id;



    ?>

考虑使用来分解url,然后在查询结果上使用,首先通过
#
分解查询,然后通过
&
分解查询结果,最后通过
=
分解查询结果


这样,您就不需要编写自己的解析逻辑。由此,您将得到一个很好的数组来操作,而不是试图找出如何操作字符串。

尝试,使用preg\u match

$str = "http:/securefinder.com/ajax_query/delimiter.aspx?q=LNG&f=1.1&doc=9729&slide=214679&#doc=9729&slide=214679&";

preg_match("/doc=(.*?)&/i", $str, $d);    
preg_match("/slide=(.*?)&/i", $str, $s);

$doc_id   =  $d[1];
$slide_id =  $s[1];

echo 'doc id:' . $doc_id ;
echo 'slide id:'. $slide_id;

只是使用而不是发明你自己的解析器。@Dcoder Thank不知道parse\u str将尝试它,因为
preg\u match()
有它的用途,有时将它用于像这样的简单任务是过火了。