我有一个列表,包含如下链接:
<a href=index.php?p=page_1>Page 1</a>
<a href=index.php?p=page_2>Page 2</a>
<a href=index.php?p=page_3>Page 3</a>
单击时,由于此脚本,它们在我的页面上包含一个页面(page_1.inc.php或page_2.inc.php或page_3.inc.php):
<?php
$pages_dir = 'pages';
if(!empty($_GET['p'])){
$pages = scandir($pages_dir, 0);
unset($pages[0], $pages[1]);
$p = $_GET['p'];
if (in_array($p.'.inc.php', $pages)){
include ($pages_dir.'/'.$p.'.inc.php');
}
else {
echo 'Sorry, could not find the page!';
}
}
else {
include($pages_dir.'/home.inc.php');
}
?>
周期。
我还有一个xml文件,如下所示:
<program>
<item>
<date>27/8</date>
<title>Page 1</title>
<info>This is info text</info>
</item>
<item>
<date>3/9</date>
<title>Page 2</title>
<info>This is info text again</info>
</item>
<item>
<date>10/9</date>
<title>Page 3</title>
<info>This just some info</info>
</item>
</program>
这就是我想要实现的目标:
如果我点击“第1页”链接,它将在页面上显示“这是信息文本”
如果我点击链接“第2页”,它将在页面上显示“这是信息文本”
如果我点击“第3页”链接,它将在页面上显示“这只是一些信息”。
我清楚了吗? 对此有什么解决方案吗?
答案 0 :(得分:3)
您应该可以使用SimpleXMLElement方法使用xpath()执行此操作。
$xmlString = file_get_contents("path/to/xml/file.xml");
$xml = new SimpleXMLElement($xmlString);
$info = $xml->xpath("/program/item[title='Page " . $page . "']/info");
echo (string) $info[0];
<强>更新强>
要获得所有日期的数组,您可以执行以下操作:
$xmlString = file_get_contents("path/to/xml/file.xml");
$xml = new SimpleXMLElement($xmlString);
$results = $xml->xpath("/program/item/date");
$dates = array();
if (!empty($results)) {
foreach ($results as $date) {
array_push($dates, (string) $date); // It's important to typecast from SimpleXMLElement to string here
}
}
此外,如果需要,您可以将逻辑与第一个和第二个示例结合起来。您可以将$xml
对象重用于多个XPath查询。
如果您需要$dates
是唯一的,您可以在执行in_array()
之前添加array_push()
检查,也可以在foreach之后使用array_unique()
。