bắt đầu. Tôi có vấn đề sử dụng regexp expresion trong hàm sau php:regexp để phân tích xml thành mảng
$xml1 = "<arg1>
<S113-03>1</S113-03>
<S184-06>1</S184-06>
</arg1>";
$xml2 = "<arg1>
<P055>1</P055>
<P096>1</P096>
</arg1>";
function xml2array($xml) {
$xmlArray = array();
$regexp = "/<(\w+)\s*([^\/>]*)\s*(?:\/>|>(.*)<\/\s*\\1\s*>)/s";
preg_match_all($regexp, $xml, $elements);
foreach ($elements[1] as $ie => $element) {
if (preg_match($regexp, $elements[3][$ie]))
$xmlArray[$element] = xml2array($elements[3][$ie]);
else {
$xmlArray[$element] = trim($elements[3][$ie]);
}
}
return $xmlArray;
}
$array = xml2array($xml1);
echo print_r($array, true);
trong khi $ XML2 mang lại cho tôi kết quả (nó là OK):
Array
(
[arg1] => Array
(
[P055] => 1
[P096] => 1
)
)
trong khi $ xml1 mang lại cho tôi kết quả (sai):
Array
(
[arg1] => <S113-03>1</S113-03>
<S184-06>1</S184-06>
)
tôi tin rằng vấn đề là ở regexp, nhưng nội dung của nó có vẻ là trà Trung Quốc về cho tôi
Không sử dụng regex. Có câu trả lời cho bạn lựa chọn tốt hơn ... đó là [phong phú] (http://php.net/manual/en/refs.xml.php). – tmt
Xin cảm ơn tất cả. Trong thực tế, chức năng là một phần của một giao diện nhập khẩu chứng khoán trong Magento và tôi đã không chắc chắn để thay thế regexp ban đầu với SimpleXMLElement vì tôi không hiểu lý do sử dụng regexp ở đó. dù sao cảm ơn cho cả hai lựa chọn thay thế. – sorrex