извлечение xml-данных

#php #html #xml

Вопрос:

В stores.htm , я должен ввести два значения: одно для адреса улицы (название улицы и название улицы), а другое для пригорода. На основе предоставления входных данных он извлекает данные из stores.xml файла.

Проблема в том, что адрес улицы и пригород хранятся в <address> элементе stores.xml файла, а не отдельно. Я много пробовал, но не нахожу решения, как сопоставить входные данные с данными xml-файла.

Я застрял в if (condition) файле, который находится в php

stores.xml

 <?xml version="1.0" ?>
<stores>
<store>
<name>galaxy</name>
<address>50 Callander Road,Noble park</address>
</store>
<store>
<name>Remica</name>
<address>10 Challander Road,Noble park</address>
</store>
<store>
<name>Home</name>
<address>10/10 Callan Road,Richmond</address>
</store>
</stores>
 

stores.htm

 <html xmlns="http://www.w3.org/1999/xhtml" > 
<head> 
<title>Search</title> 
<script type="text/javascript" src="search.js"></script> 
</head>
<body>
<form> 
Enter Street Address: <input type="text" name="street" /> 
Enter Suburb        : <input type="text" name="suburb" />
<input name="submit" type = "button" onClick = "getData('search.php','info', street.value, suburb.value)" value = "Search"  /> 
</form>

<div id="info" /> 

</body> 
</html> 
 

search.php

          $street= $_POST["str"];
         $suburb= $_POST["sub"];

         $xmlFile = "stores.xml";
         $doc= DOMDocument::load($xmlFile);
         $store = $doc->getElementsByTagName("store"); 
         echo "<table border=1><tr><th>Name</th></tr>";   
          foreach($store as $node) 
         {   
        $name = $node->getElementsByTagName("name");
        $name = $name->item(0)->nodeValue;
        $address = $node->getElementsByTagName("address");
        $address = $address->item(0)->nodeValue;     

        if( /* what goes here? */ )  {
            echo"<tr><td>name</td></tr>";   
        }

      echo "</table>";
 

Комментарии:

1. Что именно вы пытаетесь сделать с адресом? Разделить на запятую?

Ответ №1:

Вы можете использовать функцию разнесения PHP, чтобы отделить адрес улицы от пригорода.

 // split the address into two parts, street and suburb, using delimiter ','
$address_split = explode(',', $address);
$address_street = $address_split[0];
$address_suburb = $address_split[1];

if ($address_street == $street amp;amp; $address_suburb == $suburb) {
    // code here
}
 

Комментарии:

1. …или strtok с ‘,’. Вы также можете использовать strtolower, чтобы поместить и запрос, и данные в нижний регистр, чтобы упростить сопоставление шаблонов и обрезку, чтобы удалить все пробелы на концах этих строк.