我有这种表情的麻烦:获取只有2个字符使用的preg_match
preg_match('#<file(.*)source-language="(.){2}"(.*)>#Ui', $xliff, $matches);
我试图得到“恩”出来的(正好2 AZ字符可以在那里):
<file src="index.php" source-language="en" date="2012-10-10">
我有这种表情的麻烦:获取只有2个字符使用的preg_match
preg_match('#<file(.*)source-language="(.){2}"(.*)>#Ui', $xliff, $matches);
我试图得到“恩”出来的(正好2 AZ字符可以在那里):
<file src="index.php" source-language="en" date="2012-10-10">
你已经掌握了捕获部分之外的量词。您需要移动()内的{2},以便两者都被捕获。
'#<file(.*)source-language="(.{2})"(.*)>#Ui'
用正则表达式解析HTML是一个坏主意。改为尝试Document Object Model。
如果您对html的结构充满信心,并且不太担心嵌套标签等,使用正则表达式就可以。它比DOM更快更简单。 –
preg_match('#<file(.*)source-language="(..)"(.*)>#Ui', $xliff, $matches);
我认为这是一个简单的方法,如果你知道这将是正好两个字符。不过,它可能更多,所以要小心。
由于{2}
不在捕获范围之内,因此您之前没有捕获两个字符。
实际上他只是在点后面忘记了一个星号 –
额外的星号和移动捕获组内的量词都起作用,但额外的星号表示“0或更多”,而问题具体表示“恰好2”。星号将允许捕获任何长度。 – kingcoyote