Aufbau einer preg_replace Anweisung

1. Danke. werde gleich mal ausprobieren, ob es klappt

2. das hab ich nur so schnell mal dahin geschrieben. übernommen hätte ich das so nicht. Da hätt ich mir dann noch was einfallenb lassen.
 
Also:
Das funktioniert 1A. Hab mir das dann noch ein bisschen umgeschrieben, um es weiter verarbeiten zu können.
PHP:
<?
function machwas($post)
{
return stripslashes($post);
}
$str = file('datei.htm');
$str = implode("",$str);
$str1 = preg_replace("#<!-- BEGINN KATEGORIE -->(.*)<!-- END KATEGORIE -->#Ueis","machwas('$1')",$str);
echo $str1;
?>

das stimmt doch so, zumindest klappt es so bei mir, oder gibt es da bessere wege
 
Noch etwas, kann mir hier einer erklären, wie ich diese beiden Scripte so kombiniere, dass die Ausgabe am richtigen Fleck passiert

Das Script zum aufrufen der Datei, usw.
PHP:
<?
include('parser.php');
function tausch($post)
{
  $placer = array("F_NAME" => "TEST",
						 "F_DESC" => "Ein Forum zum testen",
						 "F_N_MOD" => "Moderatoren",
						 "F_MOD" => "Grubi",
						 "F_A_THEMEN" => "5",
						 "F_A_BEITRÄGE" => "10",
						 "F_L_BEITRAG" => "19.05.2004");

	$temp = new parser($post, $placer);
}
$str = file('datei.htm');
$str = implode("",$str); 
$str1 = preg_replace("#<!-- BEGINN BEITRÄGE -->(.*)<!-- END BEITRÄGE -->#Ueis","tausch('$1')",$str);
echo $str1;
?>


Das parser.php Script:
PHP:
<?php
 Class parser
 {
  var $temp_content;
  function parser($template, $ueb_site_placer)
  {
   $this->temp_content = $template;
   $this->rplc($ueb_site_placer);
   $ausgabe = $this->temp_content;
   echo stripslashes($ausgabe); // **
  }
  function rplc($call_site_placer)
  {
   foreach($call_site_placer as $site_placer => $wert)
   {
	//$regex[var_name] : {VARIABLE}
	$regex['var_name'] = "#{[[:space:]]*?(".$site_placer."){1,}?[[:space:]]*?}#";
	$this->temp_content = preg_replace($regex['var_name'], $wert, $this->temp_content);
   }
  }
 }
?>

ich habe es schon mit return anstatt echo in versucht (s.Zeile mit **).
Dann bringt es mir aber garnichts, d.h. die Datei wird ohne das herausgefilterte ausgegeben. Wenn ich das echo lasse, wird alles an der Falschen stelle ausgegeben

Was, bzw. wie muss ich da/das machen
 
Kennst du dich etwas mit OOP aus?

PHP:
include('parser.php');
function tausch($post)
{
  $placer = array("F_NAME" => "TEST",
                         "F_DESC" => "Ein Forum zum testen",
                         "F_N_MOD" => "Moderatoren",
                         "F_MOD" => "Grubi",
                         "F_A_THEMEN" => "5",
                         "F_A_BEITRAEGE" => "10",
                         "F_L_BEITRAG" => "19.05.2004");

    $temp = new parser($post, $placer);
    return $temp->get_content();
}
$str = file('datei.htm');
$str = implode("",$str);
$str1 = preg_replace("#<!-- BEGINN BEITRAEGE -->(.*)<!-- END BEITRAEGE -->#Ueis","tausch('$1')",$str);
echo $str1;

PHP:
Class parser
{
  var $temp_content;
  function parser($template, $ueb_site_placer)
  {
   $this->temp_content = $template;
   $this->rplc($ueb_site_placer);
   //$ausgabe = $this->get_content();
   //echo stripslashes($ausgabe); // **
  }
  function rplc($call_site_placer)
  {
   foreach($call_site_placer as $site_placer => $wert)
   {
    //$regex[var_name] : {VARIABLE}
    $regex['var_name'] = "#{[[:space:]]*?(".$site_placer."){1,}?[[:space:]]*?}#";
    $this->temp_content = preg_replace($regex['var_name'], $wert, $this->temp_content);
   }
  }
	
  function get_content()
  {
    return $this->temp_content;
  }
}

Habe in der Klasse Parser noch eine Funktion gemacht die dir den Bearbeiteten string zurückgibt. Denn fängst du in tausch() auf und gibst in zurück. Dann steht der String im RegEx drin. Verstanden?

MFG
redX
 
Wunderbar.
Und ja ich kenne mich ein wenig damit aus. Hab hier mal das Tut dazu durchgearbeitet und das tut.
http://tut.php-q.net/

Kleine Anmerkung noch. Bei
return $this->get_content()
muss noch ein
stripslashes();
dazu, also
return stripslashes($this->get_content())
da sonst lauter \ im Quelltext stehen, und die den bearbeiteten Bereich Schwarz machen, d.h. keine Farben mehr da sind!
 
Zuletzt bearbeitet:
Zurück