XML / HTML を reg-ex で解析することはお勧めできませんが、この単純なことをしようとしています:
<?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 個のスペースを追加して動作します。もう1つ(1412)、そうではありません...
5.3.8 および 5.3.19 の PHP バージョンでテストしました。
ありがとう。