2016-04-14 65 views
0

我有这个file1.php如何在PHP文件之间传递文件名作为变量?

<?php 
// Start the session 
session_start(); 
?> 
<?php 
$path_to_check = ''; 
$needle = $_POST['query']; 

foreach(glob($path_to_check . '*.xml') as $filename) 
{ 
    foreach(file($filename) as $fli=>$fl) 
    { 
    if(strpos($fl, $needle)!==false) 
    { 
     echo $filename . ' on line ' . ($fli+1) . ': ' . $fl; 
    } 
    } 
} 
$_SESSION["hit"] = $fli; 
header('Location: file2.php'); 
?> 

它从一个形式的搜索内容和搜寻SEARCH_TERM_EXAMPLES它在当前目录中的所有XML的文件中。这个目录中的XML文件只有两个; 1.xml和2.xml。

说我搜索在2.XML一个字的现象发生,那么我想保存“2.XML”作为变量$ _SESSION [“打”]和file2.php使用它:

<?php 
// Start the session 
session_start(); 
?> 
<?php 
echo $_SESSION["hit"]; 
// Load XML file 
$xml = new DOMDocument; 
$xml->load($_SESSION["hit"]); 

// Load XSL file 
$xsl = new DOMDocument; 
$xsl->load('stylesheet.xsl'); 

// Configure the transformer 
$proc = new XSLTProcessor; 

// Attach the xsl rules 
$proc->importStyleSheet($xsl); 

echo $proc->transformToXML($xml); 
?> 

不幸的是,

echo $_SESSION["hit"]; 

回报仅仅是 “2”,而不是 “2.XML”,所以后来

$xml->load($_SESSION["hit"]); 

不会加载XML文件2.xml(因为变量刚刚返回2)。

我在这里做错了什么?

提前许多感谢:-)

/保罗

+2

'$ fli'是一个数字线而不是文件名。 –

+0

我将它更改为$ filename并且echo $ _SESSION [“hit”];现在正确返回'2.xml'。但它不会在$ xml-> load($ _ SESSION [“hit”])中传递;也许这是错误的语法来传递变量? –

回答

0
<?php 
// Start the session 
session_start(); 
?> 
<?php 
$path_to_check = ''; 
$needle = $_POST['query']; 

foreach(glob($path_to_check . '*.xml') as $filename) 
{ 
    foreach(file($filename) as $fli=>$fl) 
    { 
    if(strpos($fl, $needle)!==false) 
    { 
     echo $filename . ' on line ' . ($fli+1) . ': ' . $fl; 
     $_SESSION["hit"] = $filename; 
    } 
    } 
} 

header('Location: file2.php'); 
?> 

您需要保存在session变量没有行号的文件名

+0

如果您在找到'$ needle'后不需要查找其他文件,请在为'$ _SESSION [“hit”]赋值后添加'break;'。 –

+0

是的,你也可以做到这一点 –

+0

这使得它成为了Tehseen ULLAH。我也省略了'echo $ filename'这一行。 '在线'。 ($ fli + 1)。 ':'。 $ FL;”它没有目的。谢谢! –