2016-04-14 16 views
0

Ben bu file1.php:PHP dosyaları arasında bir değişken olarak bir dosya adı nasıl iletilir?

<?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'); 
?> 

Mevcut dizindeki tüm XML dosyaları arasında bunun için bir formdan arayacağınız kelimeyi ve aramal alır. Bu dizindeki XML dosyaları sadece iki tanesidir; 1.xml ve 2.xml.

:

Ben 2.xml bir kelime husul aramak Say, sonra değişken $ _SESSION [ "hit"] ve file2.php kullanmak olarak "2.xml" kaydetmek istiyor Maalesef
<?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); 
?> 

, o halde sadece "2" ve "2.xml"

echo $_SESSION["hit"]; 

döner,

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

, XML dosyası 2.xml'yi (değişken yalnızca 2 döndürdüğü için) yüklemez.

Burada yanlış olan ne yapıyorum? peşin

çok teşekkürler size oturum değişkeni değil satır numarası dosya adını kaydetmek gerekir

/Paul

+2

'$ fli' hattının bir sayıdır :-) ve bir dosya adı değil. –

+0

$ dosya adında ve echo $ _SESSION ["hit"] olarak değiştirdim; şimdi doğru '2.xml' döndürür. Ancak, $ xml-> load ($ _ SESSION ["hit"]) 'da aktarılmayacak; Belki de değişkeni geçmek yanlış bir sözdizimidir? –

cevap

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'); 
?> 

+0

Diğer dosyaları, $ iğnesini bulduğunuzda aramanıza gerek yoksa, "$ _SESSION [" hit "]' a bir değer atadıktan sonra 'break; –

+0

evet bunu da yapabilirsin –

+0

Bu onu Tehseen ULLAH yaptı. Ayrıca 'echo $ dosya adını atladım. ' internet üzerinden ' . ($ fli + 1). ':' $ Fl;' Hiçbir amacı yok. Teşekkür ederim! –

İlgili konular