• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

eregi_replace() bei HTML-Tutorial

Status
Für weitere Antworten geschlossen.
Also, ich will auf meiner Homepage ein paar HTML-Codes reinstellen. Aber ich bin zu faul die ganze Zeit < und > zu schreiben. Kann man das so ersetzen:

PHP:
<?php
$text = file(code.txt);

eregi_replace("<", "&lt;", $text);
eregi_replace(">", "&gt;", $text);

echo $text
?>

Da ich im Moment noch keinen Server habe, kann ich es auch noch nicht ausprobieren. Geht das so oder muss ich da was ändern?
 
ich schlage dir da eher preg_replace vor. Außerdem ist das ergebnis von file() ein array und muss dementsprechend mit einer foreach-schleife ausgegeben werden:
PHP:
<?php
$text = file("code.txt");

foreach ($text as $line)
{
   $text = preg_replace("@<@i","&lt",$line);
   $text = preg_replace("@>@i","&gt",$text);
   print_f ("%s\n",$text);
}
 
Zuletzt bearbeitet:
Mahlzeit,

wenn du BBCode anbieten willst würde ich das folglich machen :

PHP:
function bbcode($string) {
  
  $string = trim($string);
        
  if(empty($string)) {

    return false;

  }else {

    $string = stripslashes($string);                  
    $string = htmlentities($string);
    $string = nl2br($string);
    $string = mysql_real_escape_string($string);
   
$bbcode = array('\[b\]'=>'<b>','\[/b\]'=>'</b>','\[u\]'=>'<u>','\[/u\]'=>'</u>','\[i\]'=>'<i>','\[/i\]'=>'</i>');
                  
    foreach($bbcode as $k => $v) {
                          
       $string = ereg_replace($k,$v,$string);
                  
    }
                          
    return $string;

  }

}

Das ist btw. auch gegen SQL Injection Sicher somit kannste den String nach durchlaufen der Funktion sofort in die Datenbank schreiben ;)

Die sachen kannste natürlich noch anpassen ...

Gruss Sven
 
Also ich habe es schonmal mit diesem xampp probiert, hab aber keine Ahnung, wie ich sowas einsetzen soll.

Ich will nur wissen, ob das so funktioniert und nicht wie das anders geht. Und es soll auch kein BBCode sein...
 
Frank schrieb:
ich schlage dir da eher preg_replace vor. Außerdem ist das ergebnis von file() ein array und muss dementsprechend mit einer foreach-schleife ausgegeben werden:
PHP:
<?php
$text = file("code.txt");

foreach ($text as $line)
{
   $text = preg_replace("@<@i","&lt",$line);
   $text = preg_replace("@>@i","&gt",$text);
   print_f ("%s\n",$text);
}
Das i brauchst du nich. Oder weist du, wie man die größer/kleiner Zeich groß bzw klein schreiben kann? Außerdem fehlt ein Semikolon bei beiden HTML "Zeichen" (mir fällt grad nich ein, wie das heist :wink: )

Greetz
 
Also ich habe nochmal den Code verbessert:

PHP:
<?php
$text = file_get_contents(inhalt.txt);

function umwandeln {

eregi_replace("!<!", "&lt;", $text);
eregi_replace("!>!", "&gt;"; $text);
 
}

echo umwandeln($text);
?>

So jetzt nur meine Frage:

Funktioniert das so?
 
dementius schrieb:
Hat hier irgendjmd etwas von BB-Codes gesagt? o_O
Ja steinigt mich ... wir sind ja alle so perfekt, das keine fehler unterlaufen !

Wenigstens habe ich ein etwas Sinvolleren Beitrag geleistet als du mit deinem Zitat ...

Feed the Ape !
 
Jungs, Jungs, hört ma uff zu streiten. Das könnt Ihr auch per PN ausmachen. Kann mir denn jetz einer von euch sagen, ob mein Code so wie ich ihn vor euren Beiträgen verbessert habe, funktioniert?
 
NetzSchleicher schrieb:
PHP:
<?php
$text = file_get_contents(inhalt.txt);

function umwandeln {

eregi_replace("!<!", "&lt;", $text);
eregi_replace("!>!", "&gt;"; $text);
 
}

echo umwandeln($text);
?>

So jetzt nur meine Frage:

Funktioniert das so?

Fast. Du musst entweder den Text global machen oder mit Paramentern arbeiten. Eine Funktion kennt nur die Variabeln, die in ihr definiert sind. Das kann man wie folgt umgehen:
PHP:
function meine_funktion()
{
global $text;

<mach-mas-mit-der-Variable-$text>
}

Ich empfehle aber eher, Parameter zu verwenden. In deinem Beispiel sähe das dann so aus:

PHP:
<?php
function umwandeln($parameter) 
  {
  eregi_replace("!<!", "&lt;", $parameter); 
  eregi_replace("!>!", "&gt;"; $parameter);
  
  return $parameter;  
  }

$text = file_get_contents(inhalt.txt);

echo umwandeln($text);
?>

"return" gibt eine Variable zurück, damit sie vom Script weiterverwertet werden kann (in deinem Fall von einem Echo, dass dann die Variable ausgibt. So sollte es funktionieren. Lies aber unbedingt das hier durch!
Eigene Funktionen definieren
 
So, ich habe den Code von dir jetzt mal bei nem Freund hochgeladen und getestet. Er funktioniert einwandfrei. Ich habe mir das Tut aausgedruckt und werde mir das noch durchlesen. Danke für die Hilfe.

-kann man schliessen-
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben