0

Reqex Question: Extract words

lucky
charms

from string:

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

My attempt:

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

Result:

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_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 回答
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

您的正则表达式不合适,因为 * 已准备好使用?使 * non-gready 或更改您的正则表达式

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