我在通过PHP读取服务器上托管的XML文件的内容时遇到了一个问题。在我的托管目录中,我有1个PHP文件&其他3个是XML文件。XML文件已填充。它们有文本数据。我所需要的只是,如果我将Value1传递到我的php文件,它应该读取File1.xml&如果我将Value2传递给我的php文件,它应该是File2.xml&按原样返回其内容。我试图在这里搜索Stackoverflow,但没有找到任何与此特定问题有关的内容。
我建议file_get_contents
或cURL
用于获取内容,然后:SimpleXML
用于解析XML。
$file = $_GET['xml_file'];
$xml = file_get_contents($file.'.xml');
$simpleXml = new SimpleXMLElement($xml);
echo $simpleXml->__toString();
然后使用类似于:my.php?xml_file=file1
参见file_get_contents()
。
<?php
echo file_get_contents($_POST["value"]);
?>
这些应该符合您的要求。
$xml = file_get_contents( $_POST['value'] );
$xml = trim( $xml );
header('Content-Type: text/xml');
echo $xml;
exit();
实际上,您不需要将文件视为XML。但您应该将它与脚本中的白名单相匹配,这样人们就不能在您的服务器上请求任何文件。使用内容类型标头,您可以通知浏览器您正在发送XML文件。
$files = [
'file1' => 'File1.xml',
'file2' => 'File2.xml',
'file3' => 'File3.xml'
];
if (isset($_GET['file']) && isset($files[$_GET['file']])) {
header('Content-Type: text/xml');
readfile($files[$_GET['file']]);
} else {
echo 'Invalid file parameter.';
}