2013-12-13 24 views
0

我的遗憾是,我不知道如何正确使用正则表达式。我有一个很大的文本文件,我有兴趣在标签[POLYLINE]和[END]之间匹配每个字符串的出现。该结构不会嵌套,这意味着我在其他[POLYLINE]和[END]中没有其他[POLYLINE]和[END]标签。我曾尝试过:php preg_match - 匹配[POLYLINE]和[END]之间的字符

preg_match_all('/\[POLYLINE\](.*?)\[END\]/', $fileContents, $matches); 

希望能够在$匹配内获取字符串数组。这会返回一些东西,但不是我需要的东西。

+2

'这返回的东西,但不是我need.' - 什么是你得到的结果,是什么你需要的结果是什么? –

回答

2

添加s标志DOTALL功能,这将使其在多行匹配:

preg_match_all('/\[POLYLINE\](.*?)\[END\]/s', $fileContents, $matches); 
+0

[It works](https://eval.in/79071)没有's'标志。也许我错过了什么? –

+0

@AmalMurali:请参阅此演示:https://eval.in/79073它不匹配,因为开始标记和结束标记之间有新行。现在用's'标志看到相同的代码:https://eval.in/79074 – anubhava

+0

啊,这清除了我的怀疑。谢谢 :) –