0

文字列を解析しようとしていますが、返される内容が正しくありません。doc=から疑問符だけを抽出しようとしていますか?そしてslide=?ですが、代わりに私は

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

スライドID:&slide = 214679&#doc = 9729

ストリング :

http:/securefinder.com/ajax_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;



    ?>
4

2 に答える 2

1

prase_url()を使用してURLを分割し、次にparse_str()クエリ結果で使用して、最初にクエリを分割し#、その結果を、で分割し&、最後にその結果をで分割することを検討してください=

このように、独自の解析ロジックを作成する必要はありません。これにより、文字列を操作する方法を理解しようとする代わりに、操作するための優れた配列が得られます。

于 2012-12-27T20:29:22.310 に答える
0

preg_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;
于 2012-12-27T20:31:15.353 に答える