我有一个包含这些数据的TXT文件:无法的preg_match标记内容
<!-- block_Inspekcionnye_proverki1000_1 -->some arbitrary data
<!-- end_block_Inspekcionnye_proverki1000_1 --> other data and other tags
然而,当我试图将此内容与正则表达式匹配,我什么也没有 - 只是一个空数组。这是我有:
$regex = "`<!-- block_Inspekcionnye_proverki1000_1 -->(.*)<!-- end_block_Inspekcionnye_proverki1000_1 -->`";
$text = file_get_contents("txt.txt");
preg_match($regex, $text, $matches);
echo strpos($text, "<!-- block_Inspekcionnye_proverki1000_1 -->") . "<BR/>";
echo strpos($text, "<!-- end_block_Inspekcionnye_proverki1000_1 -->") . "<BR/>";
print_r($matches);
结果我得到:
1178
59172
Array ()
所以,你可以看到的确有<!-- block_Inspekcionnye_proverki1000_1 -->
标签 - 它开始于指数1178
。结尾标记<!-- end_block_Inspekcionnye_proverki1000_1 -->
开始于索引59172
。但为什么$matches
是空的?如果我做错了什么,使用preg_match
获得标签及其内容的正确方法是什么?
这是由于'\这个'((。| \\ n)*)'而不是'(。*)'.. 在这里检查: - https://regex101.com/r/kB5vC2/1 – rock321987
你可以使用'backreference'如下所示: - 简单的http://ideone.com/1ivkFI – rock321987
@ rock321987解决方案的替代方案是在你的正则表达式中包含's'模式修饰符,如下所示:'$ regex =“\'<! - block_Inspekcionnye_proverki1000_1 - >(。*)<! - end_block_Inspekcionnye_proverki1000_1 - > \“s”;'。这将使点也匹配换行符。 –