preg_match_all两个标签之间的正则表达式值

时间:2012-07-19 21:20:04

标签: php regex preg-match-all

我正在尝试构建一个preg_match_all,以便我可以使用该数组,但问题是我无法优化我的正则表达式。

示例输入是:

#|First Name|#
This text shouldn't be caught
#|Second Value|#

First Name和Second Value都应该在数组中。

这是我尝试过的:

preg_match_all('/\#\|(.*?)\|\#\]/',$html, $out);

preg_match_all ("/^#\|*\|#*$/i", $html, $out);

4 个答案:

答案 0 :(得分:1)

试试这个正则表达式:

/\#\|(.*?)\|\#/

答案 1 :(得分:1)

第一个是关于正确的,它只在末尾附近包含\],这会打破你想要的东西。使用

/\#\|(.*?)\|\#/

确实给了我正确的结果,匹配在$out[1]

答案 2 :(得分:0)

尝试:

preg_match_all('/#\|(.*?)\|#/', $html, $out);

不应该需要转义#。要在#之间指定#,您也可以使用

preg_match_all('/#\|([^#]*)\|#/', $html, $out);

答案 3 :(得分:0)

有几件事,你需要添加'。'你的酒吧之间的角色。这个字符意味着匹配任何字符,没有它你说匹配零或更多'|'字符。您还需要为多行匹配添加m修饰符。

/^#\|.*\|#$/im