#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, чтобы поместить и запрос, и данные в нижний регистр, чтобы упростить сопоставление шаблонов и обрезку, чтобы удалить все пробелы на концах этих строк.