Php 将xml数据写入oracle数据库

Php 将xml数据写入oracle数据库,php,xml,oracle,internationalization,Php,Xml,Oracle,Internationalization,我创建了一个php脚本,用于从xml读取数据并将其写入oracle数据库 xml数据具有html标记。有英语、俄语、意大利语、德语等多种语言 在php中,我从xml中读取数据作为 $xml=simplexml_load_file($file); foreach($xml as $value) { $text=''; if($value->englishtext=='') { $text=htmlentities(str_replace("'",

我创建了一个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); 
    }
}
插入查询是 插入国际化值(seq_id.nextval,$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>
    
    
    旅行者直接付款。]]
    
    在现代软件开发中,您应该使用参数化查询。这是为了避免黑客攻击和特殊字符导致的错误

    更换线路:

    $stid2 = oci_parse(...);
    
    具有以下语句准备代码:

    $stid2 = oci_parse(
        $conn, 
        "INSERT INTO UILABELINT VALUES (".
            "seq_uilabelint_id.nextval,':localeId',':fileName',':valueId',':text'".
        ")"
    );
    
    oci_bind_by_name($stid2, ":localeId", $localeid);
    oci_bind_by_name($stid2, ":fileName", $filename);
    oci_bind_by_name($stid2, ":valueId",  $value["ID"]);
    oci_bind_by_name($stid2, ":text",     $text);
    
    最后执行语句时,您不再需要使用“str_replace”或“htmlentities”。直接获取文本即可:

    $text = $value->translatedtext;
    

    有关OCI参数化的更多信息,请参见:

    请引用您使用的插入查询$stid2=OCI\u parse($conn,“插入UILABELINT值(seq_UILABELINT_id.nextval),“$localeid.”,“$filename.”,“$value['id']。”,$text)”;您能否分享一个未正确编码的html标记的示例?是的,这是编码到&st;嗯<代码>&st甚至不是有效的HTML实体。我不确定这是否会有所不同,但你试过了吗?
    $text = $value->translatedtext;