Mil*_*loš 5 php xml encoding dom domdocument
我有这样的xml:
<formula type="inline">
<default:math xmlns="http://www.w3.org/1998/Math/MathML">
<default:mi>
ℤ
</default:mi>
</default:math>
</formula>
Run Code Online (Sandbox Code Playgroud)
我的目标是摆脱所有特殊实体,例如ℤ通过数字实体演示替换它们.
我试过了 :
$test = <content of the xml>;
$convmap = array(0x80, 0xffff, 0, 0xffff);
$test = mb_encode_numericentity($test, $convmap, 'UTF-8');
Run Code Online (Sandbox Code Playgroud)
但这不会取代ℤAny的想法吗?
我的目标是获得:
ℤ
Run Code Online (Sandbox Code Playgroud)
如下所示:http://www.fileformat.info/info/unicode/char/2124/index.htm
谢谢.
您的转换器正在将 LaTeX 转换为 MathML,而不是 HTML 实体。您需要能够直接转换为 HTML 字符引用的工具,或者MathML 到 HTML 字符引用转换器。
您应该能够使用htmlentities:
htmlentities($symbolsToEncode, ENT_XML1, 'UTF-8');
Run Code Online (Sandbox Code Playgroud)
http://pt1.php.net/htmlentities
您可以更改ENT_XML1为ENT_SUBSTITUTE,它将返回 Unicode 替换字符或十六进制字符引用。
作为替代方案,您可以使用strtr将字符转换为您指定的内容:
$chars = array(
"\x8484" => "蒄"
...
);
$convertedXML = strtr($xml, $chars);
Run Code Online (Sandbox Code Playgroud)