我知道不建议使用 reg-ex 解析 XML / HTML,但我正在尝试做这个简单的事情:
<?php
echo phpversion()."<br><br>";
$test_1 = '<Tag attr="attr_value">Tag_value</Tag>';
$test_2 = $test_1.str_repeat(' ',1000);
$test_3 = $test_1.str_repeat(' ',2000);
$match = '!<(.*?) (.*?)="(.*?)">!';
$replace = '<\\2>\\3</\\2><\\1>';
$output_1 = preg_replace($match, $replace, $test_1);
$output_2 = preg_replace($match, $replace, $test_2);
$output_3 = preg_replace($match, $replace, $test_3);
echo "xml: ".htmlspecialchars($test_1)."<br>";
echo "1: ".htmlspecialchars($output_1)."<br>";
echo "2: ".htmlspecialchars($output_2)."<br>";
echo "3: ".htmlspecialchars($output_3)."<br>";
?>
我的意思是,将一个属性及其值放在容器标签之外。在 test_1 和 test_2 示例中一切正常,但如果我在 test_3 中添加更多空格,则返回字符串为空。有人可以试试这个代码吗?
在此示例中,它可以添加 1411 个空格。再来一张 (1412) 并没有...
我已经在 5.3.8 和 5.3.19 PHP 版本上进行了测试。
谢谢。