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

时间:2014-10-22 13:01:04

标签: php regex

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

我收到了一些弃用的代码,特别是这个代码段:

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()是这个已弃用的功能的替代品,但我在正则表达式方面完全无能为力 - 我感谢任何帮助。

1 个答案:

答案 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;
//...