我遇到preg_match_all问题。 虽然preg_match确实将整个匹配作为数组的第一个元素进行回复,但preg_match_all却没有 - 第一个数组为空。 至少我选择的模式(没有尝试别人,因为它是我需要的模式)它不起作用。 这是我的代码:
preg_match_all("/<\?\?(\t| )?translate(\t| )?;(\t| )?(.*)(\t| )?\?\?>/U", $file, $translate_info);
模式本身正在工作并产生子模式匹配。
答案 0 :(得分:0)
根据新的详细信息更新:
$file = '<?? translate ; foo bar??>';
$res = preg_match_all('/<\?\?(\t| )?translate(\t| )?;(\t| )?(.*)(\t| )?\?\?>/U', $file, $translate_info);
echo "res='$res'\n";
var_dump($translate_info);
对我有用,它给出了:
res='1'
array(6) {
[0]=>
array(1) {
[0]=>
string(26) "<?? translate ; foo bar??>"
}
[1]=>
array(1) {
[0]=>
string(1) " "
}
[2]=>
array(1) {
[0]=>
string(1) " "
}
[3]=>
array(1) {
[0]=>
string(0) ""
}
[4]=>
array(1) {
[0]=>
string(8) " foo bar"
}
[5]=>
array(1) {
[0]=>
string(0) ""
}
}