2016-05-22 7 views
0

Vor einer Weile machte ich einen Beitrag (Searching for a specific string from all PHP files in the parent directory), die über mich die Position des Dateipfads in einem Array fand, nur wenn die Datei eine hatte spezifisches SchlüsselwortSuche nach einer bestimmten Zeichenfolge aus allen PHP-Dateien im übergeordneten Verzeichnis (Aktualisiert)

Allerdings war das in meiner alten Website, die ich jetzt verloren habe. Also erstelle ich es gerade neu. Aus irgendeinem Grund funktioniert diese Funktion jedoch nicht.

public function build_active_theme() { 
$dir = CONPATH . '/themes/' . $this->get_active_theme() . '/'; 

$theme_files = array(); 
foreach(glob($dir . '*.php') as $file) { 
    $theme_files[] = $file; 
} 

$count = null; 
foreach($theme_files as $file) { 
    $file_contents = file_get_contents($file); 
    if(strpos($file_contents, 'Main')) { 
     $array_pos = $count; 
     $main_file = $theme_files[$array_pos]; 

     echo $main_file; 
    } 
    $count++; 
} 

}

Diese Funktion verursacht die folgenden Fehler:

Notice: Undefined index: in /home/u841326920/public_html/includes/class.themes.php on line 30

Ich habe das Problem auf dem etwas falsch mit dem $ Zählvariable verengt. Immer wenn ich versuche, den $ count-Wert wiederzugeben, sobald das Skript die richtige Datei gefunden hat, wird nichts angezeigt.

Aber nachdem ich fast eine Stunde mit so einem einfachen Problem verbracht habe, fängt es offensichtlich an, mich zu frustrieren, also suche ich jetzt Hilfe.

(Hinweis: Ich habe die Funktion direkt aus dem alten Post in meinen Code kopiert und die entsprechenden Änderungen an den Variablen vorgenommen, damit sie in der neuen Site funktionieren, also ist es genau so wie die behobene Lösung mein vorheriges Problem - was komischerweise auch durch die Variable $ count verursacht wurde.

Danke, Kieron

Antwort

3

Sie die foreach $ key anstelle eines separaten Zählvariable verwenden können, versuchen Sie den Code unten:

foreach($theme_files as $key => $file) { 
    $file_contents = file_get_contents($file); 
    if(strpos($file_contents, 'Main') !== false) { 
     $main_file = $theme_files[$key]; 

     echo $main_file; 
    } 
} 
+0

Ausgezeichnet, es hat funktioniert! Vielen Dank! Edit: Ich werde als Antwort markieren, sobald ich dazu in der Lage bin. – Sutton

+0

Randnotiz: 'strpos()' könnte 0 zurückgeben, wenn 'Main' das erste Wort des Inhalts ist. Sie können '! == false 'hinzufügen, um sicherzustellen, dass es nicht gefunden wird. Ich habe es in meiner Antwort aktualisiert. – M4tini

+0

Danke! Ich schätze die Verbesserung sehr und habe sie implementiert. Nochmals vielen Dank! – Sutton

0

Sie setzen $ count = null; , versuchen Sie es vor dem $ array_pos = $ count;

Verwandte Themen