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

preg_replace hilfe (bereichs replacement)

Status
Für weitere Antworten geschlossen.

Schnuff

Neues Mitglied
hi, ich habe mich heute in die Regulären Ausdrücke eingelesen, und bräuchte jetzt eine Hilfe:
ich möchte, dass in einem bestimmten 'Container' Bestimmte Zeichen ersetzt werden:
HTML:
"<b>hallo dies soll fett bleiben</b>
[html ]Ich will auch angezeigt werden :)
<b>dies soll nicht fett sein, und es soll dort
&lt;b&lg; stehen, anstatt von klammern</b>
[/ html]<b>dies soll wieder fett sein</b>"

so in der art wollte ich es machen, ich komme aber nicht darauf, wie man in einem bereich, mehrere abfragen laufen lassen kann :(
 
Werbung:
Werbung:
Ja, sit aber recht einfach zu machen:

PHP:
function tauschen($erg){
	return htmlspecialchars($erg[1]);
}
$str = "<b>Fett,</b> nicht fett, [html]<b>Nicht fett</b>[/html]";
$str = preg_replace_callback("!\[html\](.*)\[/html\]!isU", "tauschen", $str);
echo $str;
 
dann müsste ich nur noch wissen, wie ich den inhalt von $1 nochmal umformen kann... damit nur der html code, im html tag umgeformt wird...
 
Das müsste so in der Art gehen (ungetestet):

PHP:
function tauschen($erg){
    $erg = str_replace("&lt;", "<", $erg);
    return str_replace("&gt;", ">", $erg);
}
$str = htmlspecialchars($str);
$str = preg_replace_callback("!\[html\](.*)\[/html\]!isU", "tauschen", $str);
 
Werbung:
Grade eben gesehen, es gibt eine Funtkion für sowas: [phpnet]html_entity_decode[/phpnet]

Also besser wäre wohl
PHP:
function tauschen($erg){
    return html_entity_decode($erg[1]);
}
$str = htmlentities($str);
$str = preg_replace_callback("!\[html\](.*)\[/html\]!isU", "tauschen", $str);


Aber besser, wenn du sowas wie BBCode für User benutzt, HTML-Code der vom User eingegeben und dann geparset wird kann gefährlich sein ;)
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben