我可以在 php 中包含 xml 文件中的元素吗?
我有一个列表,由如下所示的链接组成:
<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 页”,它将在页面上显示“这只是一些信息”。
我说得足够清楚吗? 有什么解决办法吗?
I have a list, consisting of links looking like this:
<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>
When clicked they include a page (page_1.inc.php or page_2.inc.php or page_3.inc.php) on my page thanks to this script:
<?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');
}
?>
Period.
I also have an xml file looking like this:
<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>
This is what I want to achieve:
If I click on the link "Page 1" it will display "This is info text" on the page.
If I click on the link "Page 2" it will display "This is info text again" on the page.
If I click on the link "Page 3" it will display "This just some info" on the page.
Was I clear enough?
Is there any solution for this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您应该能够使用 SimpleXMLElement 来执行此操作。 php.net/manual/en/simplexmlelement.xpath.php" rel="nofollow noreferrer">xpath() 方法。
更新:
要获取所有日期的数组,您可以执行以下操作:
此外,如果需要,您可以组合第一个和第二个示例中的逻辑。您可以将
$xml
对象重复用于多个 XPath 查询。如果您需要
$dates
是唯一的,则可以在执行array_push()
之前添加in_array()
检查,或者可以使用 < foreach 之后的 code>array_unique() 。You should be able to do this with SimpleXMLElement using the xpath() method.
Update:
To get an array of all dates you would do something like this:
Also, you could combine the logic, if needed, from the first and second examples. You can reuse the
$xml
object for multiple XPath queries.If you need
$dates
to be unique, you can either add anin_array()
check before doing thearray_push()
or you can usearray_unique()
after the foreach.