Je sais it is not recommended to parse XML/HTML with a reg-ex, mais je suis en train de faire cette chose simple:preg_replace retourne une chaîne vide lorsque vous utilisez beaucoup d'espaces
<?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>";
?>
Je veux dire, mettre un attribut et sa valeur de la balise conteneur. Tout fonctionne correctement avec les exemples test_1 et test_2, mais si j'ajoute plus d'espaces comme dans test_3, la chaîne de retour est vide. Quelqu'un peut-il essayer ce code?
Dans cet exemple, il fonctionne en ajoutant 1411 espaces. Un de plus (1412) et pas ...
J'ai testé sur les versions 5.3.8 et 5.3.19 PHP.
Merci.
Je ne connais pas la raison, mais vous pouvez toujours couper la chaîne en premier. – vedarthk