我有一個包含這些數據的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」;'。這將使點也匹配換行符。 –