我已经创建了一个PHP脚本,从XML读取数据并将其写入Oracle数据库中。XML数据包含HTML标签,并且使用各种语言编写,如英语、俄语、意大利语和德语。
在PHP中,我通过以下方式读取XML数据:
$xml=simplexml_load_file($file);
foreach($xml as $value)
{
$text='';
if($value->englishtext=='')
{
$text=htmlentities(str_replace("'", "'", $value->translatedtext), ENT_HTML5);
}
else
{
$text=htmlentities(str_replace("'", "'", $value->englishtext), ENT_HTML5);
}
}
插入查询语句如下: INSERT INTO Internationalization VALUES (seq_id.nextval,$text)
$stid2 = oci_parse(
$conn,
"INSERT INTO UILABELINT VALUES (seq_uilabelint_id.nextval,'".$localeid."','".$filename."','".$value['ID']."',$text)"
);
我的实际问题是有时数据被正确插入,有时html标签未正确编码。
有人能给我建议吗?
- 我是否应该使用htmlentities()。
- 我应该怎么做才能在html5中显示这些html标签。
XML数据示例
<?xml version="1.0" encoding="UTF-8"?>
<Resources>
<Section ID="AddListing">
<englishtext><![CDATA[Add Listing]]></englishtext>
<translatedtext/>
</Section>
<Section ID="DirectPayment">
<englishtext><![CDATA[Receive <b>direct payments</b> from travelers.]]</englishtext>
<translatedtext/>
</Section>
</Resources>
&st;
不是一个有效的 HTML 实体。不确定htmlspecialchars
是否会有所不同,但你试过了吗? - ivan.simhtmlentities($value->translatedtext, ENT_HTML5|ENT_QUOTES, "UTF-8");
代替str_replace
。 - ivan.sim