php strpos忽略字符
我试图解析一个字符串,但返回的内容不正确,我试图从doc=?中提取问号?幻灯片=?,但我得到 文档id:&doc=9729&slide=214679doc=9729&slide=21 幻灯片id:&slide=214679doc=9729 字符串: http:/securefinder.com/ajax#u query/delimiter.aspx?q=LNG&f=1.1&doc=9729&slide=214679&doc=9729&slide=214679& 它似乎不接受&作为定界字符php strpos忽略字符,php,html,Php,Html,我试图解析一个字符串,但返回的内容不正确,我试图从doc=?中提取问号?幻灯片=?,但我得到 文档id:&doc=9729&slide=214679doc=9729&slide=21 幻灯片id:&slide=214679doc=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()
有它的用途,有时将它用于像这样的简单任务是过火了。