2016-09-28 2 views
0

Ich war herumwandern, wenn es möglich wäre, eine HTML-Schema-Seite mit speziellen Zeichenfolgen zu speichern, um durch Variable zu ersetzen und wie es gemacht wird.Ist es möglich, HTML von einer externen Seite zu drucken, indem Sie Zeichenfolgen ersetzen?

in einer externen Datei, würde Ich mag die HTML-Struktur eines Produkts setzen, ist es schema.php nennen wir: über

<span id="{% id %}">{%= name %}</span> 
<span>{%= imageURL() %}</span> 

Das Beispiel ist nur ein einfacheres Beispiel. In der externen Datei wäre der HTML-Code komplexer. Ich weiß, wenn ich nur ein paar Zeilen hätte, könnte ich sie einfach mit einer einfachen Funktion wiedergeben, aber das ist nicht der Fall.

In einer anderen Datei, die ich eine Klasse, die Produkte handhaben, machen sie es class.php nennen:

class Product { 
    //logic that is useless to post here. 

    public function imageURL() { 
     return "/some/url".$this->id."jpg"; 
    } 
} 

In dieser Klasse würde ich eine Funktion hinzufügen, die den Inhalt von schema.php nehmen und Echo es dann in der Öffentlichkeit Datei für Benutzer.

Ich habe versucht, mit file_get_contents() und file_put_contents() aber es funktioniert einfach nicht:

$path_to_file = 'data/prodotti/scheda.inc'; 
$file_contents = file_get_contents($path_to_file); 

$file_contents = str_replace(
    "{%= ", 
    "<?php echo $this->", 
    $file_contents 
); 

$file_contents = str_replace(
    " }", 
    "; ?>", 
    $file_contents 
); 

file_put_contents($path_to_file, $file_contents); 

es möglich ist, schema.php Seite aufrufen und mit benutzerdefinierten Variablen drucken?

+0

'DOMDocument' könnte Ihre beste Wette sein. – PHPglue

+0

Google für PHP-Vorlagen-Bibliotheken – Barmar

+0

Was Sie haben, sollte funktionieren. Mit Ausnahme von '$ file_contents = str_replace ( " "}" benötigen Sie '$ file_contents = str_replace ( "%} ",' Ihre Beispieldaten vorausgesetzt. – developerwjk

Antwort

0

Von "Schemaseite" Ich denke, Sie meinen "Vorlage" und ja, aber der beste Weg, es zu tun ist, eine vorhandene Templating-Engine wie Smarty oder eine Moustache-Implementierung wie https://github.com/bobthecow/mustache.php zu verwenden, anstatt es selbst zu implementieren Risiken von XSS, HTML-Injektion und wie Sie schließlich Funktionen wie Schleifen und Bedingungen wollen.

+0

Ich denke, dass Schnurrbart die beste Option ist, da es mit Composer geliefert wird Ich kann nichts auf meinem Server installieren, aber ich wollte keine andere Vorlage lernen. – dcdeiv

0

können Sie es normalerweise mit php require func tun. ohne Strings zu ersetzen, wenn Sie nur die Datei als "Vorlage", dann verwenden möchten:

in schema.php:

<?php 
echo'<span id="'.$id.'">'.$name.'</span> 
<span>'.$imageURL.'</span>'; 
?> 

in Class.php:

<?php 
class Product { 
//logic that is useless to post here. 

public function imageURL() { 
    return "/some/url".$this->id."jpg"; 
} 
} 
$imageURL = imageURL(); ?> 

Index.php oder was auch immer die Hauptseite behandelt, die class.php und temp.php behandelt (Schema)

<?php 
//avoid undefined variables on errors 
//in case that you don't check for values submitted 
$id = 0; 
$name = 0; 
$imageURL = ''; 

//set vars values 
$id = /*something*/; 
$name = /*something 2*/; 
$imageURL = /*something3*/; 
//all date will be replaced is ready, oky nothing to wait for 
require('path/to/schema.php'); 

Hinweis: Wenn Sie diese Daten vom Benutzer erhalten, sollten Sie mit if(isset()) validieren.

hoffe das hilft,

+0

@dcdeiv Wenn das nicht das ist, was du willst, würde ich es falsch verstehen, mache es klarer und ich werde mein Bestes tun, um zu helfen :) – xYuri

Verwandte Themen