1

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

一个示例输入是:

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

名字和第二个值都应该在数组中。

这是我尝试过的:

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

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

4 回答 4

1

试试这个正则表达式:

/\#\|(.*?)\|\#/
于 2012-07-19T21:23:02.833 回答
1

第一个是正确的,它只包含\]接近尾声的内容,这打破了你想要的。使用

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

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

于 2012-07-19T21:24:25.720 回答
0

尝试:

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

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

preg_match_all('/#\|([^#]*)\|#/', $html, $out);
于 2012-07-19T21:26:42.960 回答
0

有几件事,您需要添加“。” 你的酒吧之间的性格。这个字符意味着匹配任何字符,没有它你说匹配零个或多个'|' 人物。您还需要添加 m 修饰符以进行多行匹配。

/^#\|.*\|#$/im
于 2012-07-19T21:27:01.510 回答