notre client nous a fourni des données XML qui doivent être traitées en utilisant PHP. Ils ont choisi d'abuser des attributs en les utilisant pour de gros morceaux de texte (contenant des sauts de ligne). L'analyseur XML remplace les sauts de ligne par des espaces pour rendre le XML W3 compatible. Pour éviter de perdre les sauts de ligne, je souhaite lire le fichier sous forme de chaîne, puis traduire toutes les sauts de ligne entre guillemets avec
. Je pense que j'ai besoin d'une expression régulière pour cela, mais j'ai du mal à en trouver un.Expression régulière PHP nécessaire pour remplacer les sauts de ligne, mais seulement entre guillemets
Ceci est mon code de test (PHP 5) jusqu'à présent, à l'aide d'un look-ahead et regarder en arrière, mais il ne fonctionne pas:
$xml = '<tag attribute="Header\r\rFirst paragraph.">\r</tag>';
$pattern = '/(?<=")([^"]+?)\r([^"]+?)(?=")/';
print_r(preg_replace($pattern, "$1 $2", $xml));
Quelqu'un peut-il me aider à obtenir ce droit? Devrait être facile pour un maître regexp chevronné :)
Peut-être qu'il suffirait de remplacer simplement * une ligne * vous casse rencontre avec ' '? Je veux dire, les nouvelles lignes sont (devraient être) insignifiantes en XML, donc vous pouvez remplacer celles entre les balises sans rien casser. N'oubliez pas de remplacer également les caractères TAB. – Tomalak