我很抱歉发布这个问题,但我对正则表达式完全不称职。
我收到了一些弃用的代码,特别是这个代码段:
eregi("<MERCHANT>(.*)<\/MERCHANT>", $fcontents, $merchant_id);
eregi("<ORDERID>(.*)<\/ORDERID>", $fcontents, $orderid_id);
eregi("<TXORDER>(.*)<\/TXORDER>", $fcontents, $txorder_id);
eregi("<AMOUNT>(.*)<\/AMOUNT>", $fcontents, $amount);
eregi("<RESULT>(.*)<\/RESULT>", $fcontents, $judge_re);
eregi("<CODE>(.*)<\/CODE>", $fcontents, $error_code);
从PHP 5.3开始,eregi()
函数似乎已被弃用。
输入字符串是通过cURL返回的XML字符串:
<?xml version="1.0" encoding="UTF-8" ?><DRAWBACKAPI><MERCHANT>10023951776</MERCHANT><ORDERID>1687143935</ORDERID><TXORDER>20141021114751</TXORDER><AMOUNT>0.01</AMOUNT><RESULT>N</RESULT><CODE>不在可信任的IP之内</CODE></DRAWBACKAPI>
我在StackOverflow周围搜索,看起来preg_match()
是这个已弃用的功能的替代品,但我在正则表达式方面完全无能为力 - 我感谢任何帮助。
答案 0 :(得分:2)
我会使用XML parser来做这件事,因为这是他们的目的。
<?php
$xml = <<<XML
<?xml version="1.0" encoding="UTF-8" ?><DRAWBACKAPI><MERCHANT>10023951776</MERCHANT><ORDERID>1687143935</ORDERID><TXORDER>20141021114751</TXORDER><AMOUNT>0.01</AMOUNT><RESULT>N</RESULT><CODE>不在可信任的IP之内</CODE></DRAWBACKAPI>
XML;
$objXml = simplexml_load_string($xml);
$merchant = $objXml->MERCHANT;
$orderid = $objXml->ORDERID;
//...