0

だから私はPHPでルーティングシステムを作りました...

/post/:id という名前のルートを作成しましたが、 $matches を print_r するたびに次のようになります。

配列 ( [0] => /post/10 [d] => 10 [1] => 10 ) 1

配列内の「d」は明らかに「id」である必要があります。これを修正する方法を知っている人はいますか?

どうも

    <?php
    public function setPattern($pattern)
    {
            $this->_pattern = $pattern;
            $this->_regex = preg_replace('#:([a-z])+$#', "(?P<$1>[^/]+)", $pattern);
    }

    public function match($uri)
    {

            if (!preg_match("#" . $this->_regex . "$#", $uri, $matches))
            {
                    return false;
            }
            else
            {
                      return $matches;
            }
    }
4

1 に答える 1

0

preg_replace通話でキャプチャするのは1文字だけです。これを試して、キャプチャに+記号を入れて、複数の文字を取得します。

$this->_regex = preg_replace('#:([a-z]+)$#', "(?P<$1>[^/]+)", $pattern);
于 2012-12-06T07:59:03.193 に答える