Hallo,
ich schreibe gerade an einem kleinen CMS System. Ich möchte es ermöglichen durch einen einfachen Text im Editor den Inhalt von externen Datein aus einem bestimmten Verzeichnis einzubinden.
Zur Erklärung:
- Die Dateien müssen im Verzeichnis includes liegen
- php Code soll nicht interpretiert werden
- Wenn die Datei nicht existiert soll eine Fehlermeldung kommen
- der Befehl zum einbinden ist: include[Dateiname]
Meine Fragen:
Macht es Sinn vorher zu Überprüfen ob es ein include gibt? Habe das eingebaut weil bei php.net folgendes steht über preg_match, gilt bestimmt auch für preg_match_all:
Die Lösung funtioniert, aber würdet Ihr anders herangehen?
ich schreibe gerade an einem kleinen CMS System. Ich möchte es ermöglichen durch einen einfachen Text im Editor den Inhalt von externen Datein aus einem bestimmten Verzeichnis einzubinden.
Zur Erklärung:
- Die Dateien müssen im Verzeichnis includes liegen
- php Code soll nicht interpretiert werden
- Wenn die Datei nicht existiert soll eine Fehlermeldung kommen
- der Befehl zum einbinden ist: include[Dateiname]
PHP-Code:
// Überprüfung ob in dem Text ein include vorkommt
if(stripos($output, 'include[') !== FALSE){
//Wenn ja dann alle raussuchen
preg_match_all("/include\[(.*?)\]/U", $output, $include);
//Ergebnisse verarbeiten
foreach($include[0] as $key => $var){
//Pfad und Dateiname festlegen
$file = 'includes/'.$include[1][$key];
//Überprüfen ob Dateiname existiert
if(file_exists($file)){
//Wenn ja dann Inhatlt der Datei holen
$content = file_get_contents($file);
}else{
//Wenn nicht dann Fehlermeldung
$content = '<h1>Die eingebundene Datei exestiert nicht!</h1>';
}
//Ersetzten des include durch Dateiinhalt bzw. Fehlermeldng
$output = (str_replace($var, $content, $output));
}
}
Macht es Sinn vorher zu Überprüfen ob es ein include gibt? Habe das eingebaut weil bei php.net folgendes steht über preg_match, gilt bestimmt auch für preg_match_all:
Verwenden Sie nicht preg_match(), wenn Sie nur überprüfen wollen, ob eine Zeichenkette in einer anderen Zeichenkette enthalten ist. Verwenden Sie dafür stattdessen die Funktionen strpos() oder strstr(), die das schneller erledigen.
Kommentar