下面是一個簡單的表格,我使用在admin_xml.php如何提高將下面的代碼PHP
<form name="review" action="admin_xml.php" method="post">
<textarea name="xml" cols="40" rows="10"></textarea>
<input class="submit" type="submit" value="Submit Request">
</form>
這裏發送XML數據是我爲了取回數據進入XML從MySQL數據庫
<?xml version="1.0" encoding="UTF-8"?>
<GetOrdersIds>
<Credentials>
<Username>my_username</Username>
<Password>my_password</Password>
</Credentials>
<Criterions>
<OrderNumber></OrderNumber>
<StartDate>2009-01-01</StartDate>
<EndDate>2009-07-01</EndDate>
</Criterions>
</GetOrdersIds>
這裏是一個從XML中提取標籤的PHP代碼:
<?php
$text_all = "<?xml version=\"1.0\"?>\r\n<GetOrdersIds version=\"1.0\">\r\n<Credentials>\r\n<Username>my_username</Username>\r\n<Password>my_password</Password>\r\n</Credentials>\r\n<Criterions>\r\n<OrderNumber></OrderNumber>\r\n<StartDate>2009-01-01</StartDate>\r\n<EndDate>2009-07-01</EndDate>\r\n</Criterions>\r\n</GetOrdersIds>";
$field = "Criterions";
$result = substr($text_all, strpos($text_all, "<".$field.">")+strlen("<".$field.">"), strpos($text_all, "</".$field.">")-strlen("<".$field.">")-strpos($text_all, "<".$field.">"));
?>
從上面的PHP代碼的結果是:
<OrderNumber></OrderNumber>
<StartDate>2009-01-01</StartDate>
<EndDate>2009-07-01</EndDate>
當腳本運行時,PHP代碼經過我的MySQL數據,並提取開始日期和給出的結束日期之間的所有訂單以上。
是否有改進下面的PHP代碼的一種更好的方式,使之執行相同的功能:
$result = substr($text_all, strpos($text_all, "<".$field.">")+strlen("<".$field.">"), strpos($text_all, "</".$field.">")-strlen("<".$field.">")-strpos($text_all, "<".$field.">"));
這是搜索整個XML數據和檢索所有標籤的代碼。
UPDATE:
誰能列出的SimpleXML的$結果代碼?
使用PHP的SimpleXML類(http://ca2.php.net/simplexml) – tomzx 2009-07-10 21:19:00