0

理解できない正規表現を含む次のコードに出くわしました。

具体的には:

'#<!-- START '. $tag . ' -->(.+?)<!-- END '. $tag . ' -->#si'

PHP は、関数 'preg_match' が次を返すと述べています。

$matches[0] には完全なパターンに一致したテキストが含まれ、$matches[1] には最初にキャプチャされた括弧で囲まれたサブパターンに一致したテキストが含まれます。の上。 "

私はそれを取る

(.+?)

そのような「括弧で囲まれたサブパターン」です。サブパターンについてどこで読むことができますか? w3schools.com とは異なる公式の場所。

/**
 * Gets a chunk of page content
 * @param String the tag wrapping the block ( <!-- START tag --> block <!-- END tag --> )
 * @return String the block of content
 */
public function getBlock( $tag )
{
    preg_match ('#<!-- START '. $tag . ' -->(.+?)<!-- END '. $tag . ' -->#si', $this->content, $tor);

    $tor = str_replace ('<!-- START '. $tag . ' -->', "", $tor[0]);
    $tor = str_replace ('<!-- END '  . $tag . ' -->', "", $tor);

    return $tor;
}

リンク付きの説明は役に立ちます!

ありがとう!

4

2 に答える 2

3

次のような方法ですべての一致を確認できます。

print_r($matches);

PHP でグループをキャプチャする方法の詳細については、regular-expressions.info サイトを参照してください。

于 2013-08-12T21:01:58.590 に答える