用PHP替换CDATA中的内容

用PHP替换CDATA中的内容,php,regex,cdata,Php,Regex,Cdata,我想用和#xA替换chr(10)内使用PHP 测试 测试]]> 但我的正则表达式很差 为什么要使用正则表达式 $final = str_replace( chr(10), '
', $cdata ); $xml=“cc\n\naa\nbb\n”; $callback=函数($m){ 返回“”; }; echo preg_replace_回调('~~s',$callback,$xml); p、 您可能不需要preg\u replace\u回调就可以做到这一点,但它看起来比将所

我想用
和#xA替换
chr(10)
内使用PHP


测试
测试]]>

但我的正则表达式很差

为什么要使用正则表达式

$final = str_replace( chr(10), '
', $cdata );
$xml=“cc\n\naa\nbb\n”;
$callback=函数($m){
返回“”;
};
echo preg_replace_回调('~~s',$callback,$xml);

p、 您可能不需要preg\u replace\u回调就可以做到这一点,但它看起来比将所有逻辑放入preg\u replace中要好…

这一点非常不清楚。你能详细解释一下吗?我有一个XML。CDATA中存在具有值的不同节点。CDATA中有“换行”/“chr(10)”。我想用相应的HTML实体“ ;”替换这行提要。为什么要麻烦呢?这是一个CDATA块-您不必在CDATA块中对实体进行编码。我有一个洞XML,其中包含CDATA中具有值的不同节点。CDATA中有“换行”/“chr(10)”。我想用相应的HTML实体“ ;”替换此换行符。如何解析此换行符?循环遍历节点,并在每个节点上使用我上面的代码片段
$xml = "cc\n<!CDATA[[Text\ntest\ntest]]>\naa\nbb\n";
$callback = function($m) {
    return '<!CDATA[[' . preg_replace("~" . chr(10) . "~s", '&#xA;', $m[1]) . ']]>';
};
echo preg_replace_callback('~<!CDATA\[\[(.+?)\]\]>~s', $callback, $xml);