0

Reqexの質問:単語を抽出する

lucky
charms

文字列から:

<a>lucky <b>charms</b></a>

私の試み:

preg_match_all("/<(.*)>(.*)<\/(.*)>+/is", $text, $matches);
print_r($matches);

結果:

Array
(
    [0] => Array
        (
            [0] => <a>lucky <b>charms</b></a>
        )

    [1] => Array
        (
            [0] => a>lucky <b>charms</b
        )

    [2] => Array
        (
            [0] => 
        )

    [3] => Array
        (
            [0] => a
        )

)
4

3 に答える 3

0

常にその構造を持っている場合は、次を使用できます。

preg_match("#<(.*?)>(.*?)<(.*?)>(.*?)</\\3></\\1>#is", '<a>lucky <b>charms</b></a>', $matches);

含まれてい$matchesます:

array(5) {
  [0]=>
  string(26) "lucky charms"
  [1]=>
  string(1) "a"
  [2]=>
  string(6) "lucky "
  [3]=>
  string(1) "b"
  [4]=>
  string(6) "charms"
}
于 2013-02-25T23:03:17.643 に答える
0

*はすでに使用されているため、正規表現は適切ではありませんか?*を準備できなかったり、正規表現を次のように変更したりするには

<([^>]+)>(.*?)</\1>
于 2013-02-25T23:03:33.520 に答える
0

終了タグと次の開始タグの間のすべてはどうですか

preg_match_all("/\>([^\<]+)\</is", $text, $matches);

次に、あなたが望む試合があります$matches[1]

Array
(
    [0] => Array
        (
            [0] => >lucky <
            [1] => >charms<
        )
    [1] => Array
        (
            [0] => lucky 
            [1] => charms
        )
)
于 2013-02-25T23:07:40.800 に答える