eregi正则表达式函数输入的替代方案


Alternatives to eregi regular expression function input

我很抱歉发布这个问题,但我在正则表达式方面完全不称职。

我收到了一些不推荐使用的代码,特别是以下代码片段:

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);

eregi()函数似乎从PHP 5.3开始就被弃用了。

输入字符串是通过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()是这个不推荐使用的函数的替代品,但我在regex方面完全不称职——我很感激任何帮助。

我会使用XML解析器来实现这一点,因为这就是它们的构建目的。

<?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;
//...