gpt4 book ai didi

php - 我可以使用 php 包含来自 xml 文件的元素吗?

转载 作者:行者123 更新时间:2023-12-04 06:16:44 25 4
gpt4 key购买 nike

我有一个列表,由如下所示的链接组成:

<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 页”,它将在页面上显示“这只是一些信息”。

我说的够清楚了吗?
有什么解决办法吗?

最佳答案

你应该可以用 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()或者您可以使用 array_unique()在 foreach 之后。

关于php - 我可以使用 php 包含来自 xml 文件的元素吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7151791/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com