Bestimmten Teil suchen und übergeben?

Create

Mitglied
Hallo PHPler,

ich habe ein Problem, ich möchte eine HTML-Seite bzw. dessen Inhalt als "Druckversion" übergeben und mache das bisher so:

<a href="../path/drucken.php?id=<?php echo base64_encode(__FILE__);"?>
Also dieser Teil wird aus der HTML-Datei als Link an ein PHP -Script übergeben (so weit so gut!). Dieser trägt dann den aktuellen Namen der Datei ausgehend von Root mit sich, das wird im Script die Varaible id.

Jetzt habe ich aber gemerkt, dass des nicht so gut ich lesen und die Seite aus und gebe sie mit einigen ersetzungen (also Bilder rausnehmen etc. ) wieder aus (Druckversion eben).
Jetzt habe ich das Problem, dass JavaScript etc. stören und die Seite nicht orndungsgemäß angezeigt wird.

Gibt es eine Möglichkeit das PHP nur bestimmte Teile ausließt?
Also am besten wäre alles zwischen zwei selbstdefinierbaren Tags.
Zum Beispiel:

Alles zwischen
<!--Content-->

<!--EndContent-->

Dan würde ich den Bereich dazwischen gerne übergeben und ausgeben lassen. - die Druckversion. Aber ich "ochse da jetzt schon eine Woche mit rum und bin langsam am ende....

Weiß jemand einen guten Rat?
Danke, Danke, Danke...

Bis dann
goCreate
 
Hi!
versuch's doch mal so:

$fp = fopen("content.htm","r");
$read = false;
while(!feof($fp)){
$str = fgets($fp, 2000);
if($str=="startzeugs"){
$read = true;
}
elseif($str=="endzeugs"){
$read = false;
}
if($read){
$mein_content[] = $str;
}
}
fclose($fp);

Den Content solltest du danach in dem Array $mein_content haben. Wenn's nitt geht, bitte melden!
 
Seh gerade, dass ich mich hier nicht bedankt habe!
Genauso habe ich es gemacht(naja fast)!
Funktionoiert einwandfrei!

Greetz
::.. creAte :::.
 
ich biete noch einen ..

PHP:
function parse_print($template)
{
 $temp_content = file($template);

 //$regex[block_start] : <!--start-->
 $regex[block_start]   = "°<!--[[:space:]]*?[[:alpha:]]{4,}?"
. "[[:space:]]*?[a-zA-Z0-9_-_.-_-|]*?"
. "[[:space:]]*?-->°siU";

 //$regex[block_end] : <!--end|function|-->
 $regex[block_end]   = "°<!--[[:space:]]*?[[:alpha:]]{1,3}?"
.  "[[:space:]]*?[a-zA-Z0-9_-_.-_]*?"
.  "[[:space:]]*?-->°siU";

 $temp_flag = FALSE;

 foreach($temp_content as $temp_value)
 {
  #Prüfe ob Blockbeginn
  if(preg_match($regex[block_start], $temp_value))
  { 
    $temp_flag = TRUE; 
    $temp_value = preg_replace($regex[block_start], "", $temp_value); }

  #Prüfe ob Blockende
  if(preg_match($regex[block_end], $temp_value)) $temp_flag = FALSE;

  if($temp_flag) $temp_parsed[] = $temp_value;
 }

 $parsed = implode("", $temp_parsed);
 return ($parsed);
}

Aufgerufen wird die Funktion einfach
über : $cont=parse_print("content.html");

In der Content.html musst du dann
einfach nur <!--start--> bzw. <!--end-->
schreiben und Voila .. schon hast du's.

Wenn du noch Fragen dazu hast, melde
dich. Meine Adressen stehen in meiner
Signatur.

Gruß,
Mentor Jonathan

P.S. Mir ist gerade aufgefallen das man
direkt vor <!--end--> nichts
schreiben darf, da die Funktion
zeilenweise arbeitet. Wenn jemand
dieses Problem bitte noch lösen
könnte, wäre ich ihm sehr dankbar.
 
Zurück