我遇到了这个表达式的问题:
preg_match('#<file(.*)source-language="(.){2}"(.*)>#Ui', $xliff, $matches);
我正在尝试将“en”去掉(那里可以有 2 个 az 字符):
<file src="index.php" source-language="en" date="2012-10-10">
我遇到了这个表达式的问题:
preg_match('#<file(.*)source-language="(.){2}"(.*)>#Ui', $xliff, $matches);
我正在尝试将“en”去掉(那里可以有 2 个 az 字符):
<file src="index.php" source-language="en" date="2012-10-10">
您在捕获部分之外有量词。您需要在 () 中移动 {2} 以便两者都被捕获。
'#<file(.*)source-language="(.{2})"(.*)>#Ui'
preg_match('#<file(.*)source-language="(..)"(.*)>#Ui', $xliff, $matches);
如果您知道这将是两个字符,我认为这是一种更简单的方法。不过,它可能会更多,所以要小心。
您之前没有捕获这两个角色,因为它们{2}
不在捕获范围内。
用正则表达式解析 HTML 是个坏主意。请尝试使用文档对象模型。