2017-08-19 4 views
-2

Ich habe ein Problem im Moment. Es geht um den Einsatz von implizit benötigten Elementen in PHP.Wie benötigt implode PHP

Das aktuelle Projekt befasst sich mit dem Zusammenstellen von formatierten Dateien mit einem $ _GET-Parameter. So dass ich nicht mehrere <link> Tags, sondern nur eine benötigen.

Hier ein Beispiel: https://stylesheet-helper.bucketfront.com/css?sheet=minify

Sie umfassen jetzt die minify.php Datei. Um auch die Datei style.php einzubinden, habe ich ein explode/implode Element erstellt. Damit sieht die neue URL so aus: https://stylesheet-helper.bucketfront.com/css?sheet=style|minify Aber jetzt habe ich einen 500 Server Fehler, weil ich nicht weiß, wie man das benötigte Element in das implode Element einbaut.

Jetzt ist der Code:

<!-- language: lang-php --> 
    <?php 
    header("Content-type: text/css"); 
    $sheet = $_GET["sheet"]; 
    $styles = explode("|", $sheet); 
    $value = implode("", $styles); 
    require ('assets/' . $value . '.php'); 
    ?> 

Wie kann ich das Eingangselement erfordern require ('assets/' . $value . '.php'); in das implode("", $styles); Element, so dass sie beide Dateien ausgibt.

Dies ist ein Beispiel mit HTML-Tags, die implode-Element enthalten sind. Ich denke, das ist auch mit dem erforderlichen Element möglich:

<!-- language: lang-php --> 
    <?php 
    header("Content-type: text/css"); 
    $sheet = $_GET["sheet"]; 
    $styles = explode("|", $sheet); 
    $value = "<span>" . implode("</span>&nbsp;<span>", $styles) . "</span>"; 
    echo $value; 
    // Output with URL /css?sheet=style|minify: <span>style</span>&nbsp;<span>minify</span> 
    ?> 

Ich hoffe, Sie können mir helfen.

Vielen Dank.

Zusätzlich:

  • -Code der .htaccess-Datei:

    RewriteEngine on RewriteCond %{REQUEST_URI} !.php$ [NC] RewriteRule ^(.*)$ $1.php [QSA]

  • Alle Dateien auf dem bucketfront Sub-Domain Sheet-Helfer:

.htaccess css.php /assets/minify.php /assets/style.php

+1

Ihre Frage ist nicht klar. Warum benutzt du Implode? Du solltest die Stile, die du von explodieren hast, durchschleifen und 'require' auf jedem von ihnen verwenden. – bansi

+0

Ich dachte, ich könnte das benötigte Element einbauen, wie ich es mit den' span' Tags gemacht habe. Aber danke für deine Antwort. Meinst du sowas um die Styles von explode zu loopen? https://www.w3schools.com/php/php_looping_for.asp –

+0

Ich weiß nicht, woher die '... css? sheet = style | minify' Anfrage generiert wird.Wenn es von einem HTML (Webbrowser) stammt, können Sie nicht 2 Dateien für eine einzelne Anfrage senden. Sie können beide Dateien zu einer einzigen Datei verketten und die Antwort als einzelne Datei senden. – bansi

Antwort

0

Sie sollten alle Dateien enthalten, wie eine (mehr als 1 Antwort für eine einzelne Anforderung in HTTP-Protokoll nicht zurückschicken). Hinzugefügt Kommentar in Code

<?php 
header("Content-type: text/css"); 
$sheet = $_GET["sheet"]; 
$styles = explode("|", $sheet); 
// include each file. 
// If your styles are simple stylesheets (no php parsing required) 
// try using readfile instead of include 
foreach ($styles as $value){ 
    include ('assets/' . $value . '.php'); 
    // readfile method 
    // readfile ('assets/' . $value . '.php'); 

} 

Weitere Referenz: readfile

+0

Danke @bansi. Ich werde diese Version verwenden. –

0

Dies ist der letzte Code, den ich verwendet:

<?php 
header("Content-type: text/css"); 
$sheet = $_GET["sheet"]; 
$styles = explode("|", $sheet); 
$output = $styles; 
foreach ($output as $value) { 
require ('assets/' . $value . '.php'); 
} 
?> 

Ive geschlungen es wie Bansi sagte. Quelle: https://www.w3schools.com/php/php_looping_for.asp

+0

Wenn Sie nicht vorhaben, PHP-Code in Ihren Stylesheets zu verwenden, versuchen Sie 'readfile' zu ​​verwenden, da es nicht den Overhead eines PHP-Parsers benötigt, der in der Datei ausgeführt wird. 'readfile ('assets /'. $ value. '.php');' – bansi

+0

Oh danke. Nein, ich verwende keinen PHP-Code in den Stylesheets. Sein einziger CSS-Code. Ich werde readfile anstelle von include verwenden. Danke @bansi. Du hast mein Problem gelöst. :) –