【问题标题】:Removing character From String XML tag's Attribute in PHP从 PHP 中的字符串 XML 标记的属性中删除字符
【发布时间】:2016-08-23 13:10:33
【问题描述】:

我有一个 XML 字符串,在删除时遇到了一个问题:ok\"="" 从 XML 标签的属性 我的 XML 代码是

<qbxml>\n<qbxmlmsgsrs>\n<companyqueryrs statuscode="\"0\"" statusseverity="\"Info\"" statusmessage="\"Status" ok\"="">\n<companyret>\n<issamplecompany>false</issamplecompany>\n<companyname>Cougar Enterprises Hosted</companyname>\n<legalcompanyname>COFAUD</legalcompanyname>\n<address>\n<addr1>69 Smart Street</addr1>\n<city>Melbourne</city>\n<state>VIC</state>\n<postalcode>3001</postalcode>\n</address>\n<addressblock>\n<addr1>69 Smart Street</addr1>\n<addr2>Melbourne, VIC 3001</addr2>\n</addressblock>\n<legaladdress>\n<addr1>IDEV</addr1>\n<addr2>PLGPAUG15ANZ</addr2>\n<city>COF0058</city>\n</legaladdress>\n<phone>03 9854 1222</phone>\n<fax>03 9854 1223</fax>\n<email>Accounts@cougar.com.au</email>\n<companywebsite>www.cougar.com.au</companywebsite>\n<firstmonthfiscalyear>July</firstmonthfiscalyear>\n<firstmonthincometaxyear>July</firstmonthincometaxyear>\n<ein>98 765 432 154/</ein>\n<taxform>OtherOrNone</taxform>\n</companyret>\n</companyqueryrs>\n</qbxmlmsgsrs>\n</qbxml>

当我试图解析这个时,它给了我一个问题: 无法格式化 JSON 输出。与元素类型“companyqueryrs”关联的属性名称“ok”必须后跟“=”字符。

我尝试使用 str_replace 和正则表达式,但找不到结果。 我正在检查这个转换 http://www.freeformatter.com/xml-to-json-converter.html

如果我从 XML 字符串中手动删除 ok\"="" 那么它会给我正确的结果,但是从脚本中我无法删除这个。 你能建议吗? 谢谢

【问题讨论】:

  • 你能发布你用来替换ok\"=""的确切代码/脚本吗?
  • @JerodJohnson 我试图喜欢 str_replace(' "ok\"="','', $response_result));
  • 只是为了确认这不是拼写错误,而是复制粘贴错误:您使用的是str_replace('"ok\"="','',$response_result); 还是str_replace('ok\"=""','',$response_result);? (注意第一个示例中的前导 ",而不是尾随的 ")。我刚刚在这里使用正确的字符串 (ok\"="") 测试了该行:sandbox.onlinephpfunctions.com,它按预期工作。您的脚本是否有某些内容需要您转义某些字符?即:str_replace('ok\\\"=\"\"', ...
  • @JerodJohnson ,我尝试使用前面的 Slashed 但没有用。
  • @JerodJohnson 即使我也尝试只替换“ok”,但它无法在属性值中找到这一点。

标签: php json xml parsing


【解决方案1】:

你可以试试这个方法:

 $string = '
<qbxml>\n<qbxmlmsgsrs>\n<companyqueryrs statuscode="\&quot;0\&quot;"  statusseverity="\&quot;Info\&quot;" statusmessage="\&quot;Status" ok\"="">\n<companyret>\n<issamplecompany>false</issamplecompany>\n<companyname>Cougar Enterprises Hosted</companyname>\n<legalcompanyname>COFAUD</legalcompanyname>\n<address>\n<addr1>69 Smart Street</addr1>\n<city>Melbourne</city>\n<state>VIC</state>\n<postalcode>3001</postalcode>\n</address>\n<addressblock>\n<addr1>69 Smart Street</addr1>\n<addr2>Melbourne, VIC 3001</addr2>\n</addressblock>\n<legaladdress>\n<addr1>IDEV</addr1>\n<addr2>PLGPAUG15ANZ</addr2>\n<city>COF0058</city>\n</legaladdress>\n<phone>03 9854 1222</phone>\n<fax>03 9854 1223</fax>\n<email>Accounts@cougar.com.au</email>\n<companywebsite>www.cougar.com.au</companywebsite>\n<firstmonthfiscalyear>July</firstmonthfiscalyear>\n<firstmonthincometaxyear>July</firstmonthincometaxyear>\n<ein>98 765 432 154/</ein>\n<taxform>OtherOrNone</taxform>\n</companyret>\n</companyqueryrs>\n</qbxmlmsgsrs>\n</qbxml>';


 $string=str_replace('ok\"=""',"",$string);
 print_r($string);

【讨论】:

  • 在控制台上显示字符串,如:statusmessage="\"Status" ok\"="">
猜你喜欢
  • 1970-01-01
  • 2014-01-05
  • 2018-08-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-19
  • 2017-09-06
相关资源
最近更新 更多