php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 21.09.2005, 18:02  
Gast
 
Beiträge: n/a
Standard [Erledigt] htmlspecialchars-Funktion innerhalb von preg_replace aufrufe

Hallo zusammen,
ich habe folgendes PRoblem, bei der Eingabe in ein Textareafeld, kann der User zwischen "[SOURCE]" und "[/SOURCE]" html-code eingeben, der natürlich nicht als solcher ausgegeben werden soll.

Das will ich mit "htmlspecialchars" machen. Die Zeichenfolge "[code]" steht aber noch zwischen normalem Text, der nicht verändert werden soll, deswegen wollte ich "preg_replace" nehmen um das ganze einzugrenzen, mein Ansatz ist folgender:

Code:
$text = preg_replace('|^(.*[SOURCE]).*([/SOURCE].*)$|', htmlspecialchars($text, ENT_QUOTES), $text);
Bislang macht er es nicht, was am Funktionsaufruf innerhalb von preg_replace liegt. Wie muss ich den richtig angeben? Bzw. geht das überhaupt? Was würdet ihr empfehlen?

Gruß Christian
  Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 21.09.2005, 18:23  
Erfahrener Benutzer
 
Registriert seit: 02.04.2008
Beiträge: 2.603
Corvin befindet sich auf einem aufstrebenden Ast
Standard

$text = preg_replace("/\[source\](.*)\[\/source\]/isUe", "htmlspecialchars('\\1', ENT_QUOTES)", $text);
Corvin ist offline   Mit Zitat antworten
Alt 21.09.2005, 18:30  
Gast
 
Beiträge: n/a
Standard

Vielen dank, funktioniert super, doch wofür steht das "isUe"??
  Mit Zitat antworten
Alt 21.09.2005, 18:53  
Erfahrener Benutzer
 
Registriert seit: 02.04.2008
Beiträge: 2.603
Corvin befindet sich auf einem aufstrebenden Ast
Standard

Das sind Modifikatoren, das kannst du hier nachlesen:
http://de3.php.net/manual/de/referen....modifiers.php
Corvin ist offline   Mit Zitat antworten
Alt 21.09.2005, 20:53  
Gast
 
Beiträge: n/a
Standard

Oh, mir ist doch noch was aufgefallen, und zwar werden die Tags [SOURCE] und [/SOURCE] gelöscht, allerdings brauch ich die nachher noch weil ich die dann in div-tags umwandle. Wie kann man verhindern das sie gelöscht werden?
  Mit Zitat antworten
Alt 22.09.2005, 07:49  
Gast
 
Beiträge: n/a
Standard

Mit dem Modifer »e« ist aber eine gefährliche Sache.
Denn würde ich mal rausnehmen.

PHP-Code:
<?php
error_reporting
(E_ALL); 

$TXT = <<<EOD
Tags [SOURCE]
[b]uhu[/b]
[/SOURCE] gelöscht
Tags [SOURCE]
[b]oho[/b]
[/SOURCE] gelöscht
EOD;

$pattern '~(\[SOURCE\])(.*)(\[/SOURCE\])~isU';

$ersatz '$1 '.htmlspecialchars('$2'ENT_QUOTES).' $3';

echo 
preg_replace($pattern$ersatz$TXT);

?>
  Mit Zitat antworten
Alt 22.09.2005, 13:00  
Gast
 
Beiträge: n/a
Standard

Hi, danke für deine Antwort.
Er macht eigentlich alles was er soll, nur werden die Html-Tags nicht entwertet, sprich man sieht den Source-Code nicht, hat da das "htmlspecialchars" nicht gegriffen?
  Mit Zitat antworten
Alt 22.09.2005, 13:41  
Gast
 
Beiträge: n/a
Standard

Achso, ich dachte der HTML-Code soll auch ausgewertet werden ?
Sonst einfach htmlspecialchars('$2') schreiben ...
  Mit Zitat antworten
Alt 22.09.2005, 14:05  
Gast
 
Beiträge: n/a
Standard

Ach kackte heute:

PHP-Code:
<?php
error_reporting
(E_ALL);

$TXT = <<<EOD

[b]uhu[/b] 
Tags [SOURCE] 
[b]uhu[/b] 
[/SOURCE] gelöscht 
Tags [SOURCE] 
[b]oho[/b] 
[/SOURCE] gelöscht
[b]uhu[/b] 

EOD;

$pattern '~(\[SOURCE\])(.*)(\[/SOURCE\])~isU'
$ersatz '$1 $2 $3'
preg_match_all($pattern$TXT$array);
foreach(
$array[2] as $temp$TXT str_replace($temphtmlspecialchars($temp), $TXT);

echo 
$TXT;
echo 
'<pre>'$TXT'</pre>';

?>
  Mit Zitat antworten
Alt 23.09.2005, 15:12  
Gast
 
Beiträge: n/a
Standard

Wahnsinn CIX88, es funktioniert einwandfrei *freude*!!!
Viele dank für die Hilfe!!
  Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
JS: Einführung - Javascript im Schichtenmodell nikosch Tutorials 4 11.04.2009 17:06
funktion innerhalb einer Klasse mit call_user_func aufrufen phpbeginner PHP Tipps 2008 8 22.05.2008 16:20
bestimmte Funktion innerhalb php Datei mit Zeile finden? Matthiasnet PHP Tipps 2007 2 13.07.2007 02:56
[Erledigt] Zugriff auf eine Klasse innerhalb einer Funktion -&amp;amp;gt; Fehle PHP-Fortgeschrittene 23 05.02.2006 13:02
Innerhalb Echo eine Funktion ausführen test022 PHP Tipps 2006 9 02.02.2006 12:58
PHP-GTK Tutorial Beitragsarchiv 9 02.11.2005 21:07
Rückgabewert einer rekrusiven Funktion PHP-Fortgeschrittene 7 06.10.2005 18:44
(schnellere) Funktion zum Zusammenfassen von CSS PHP-Fortgeschrittene 21 08.08.2005 16:47
In einer Funktion auf eine Funktion der Klasse zugreifen phpbeginner PHP Tipps 2005-2 2 28.07.2005 00:30
Funktion in einer Funktion aufrufen? PHP Tipps 2005-2 11 14.06.2005 15:14
[Erledigt] Wie kann ich beliebig viele Werte an eine Funktion übergeben PHP Tipps 2005 11 25.01.2005 10:44
[Erledigt] Object innerhalb einer XML Parser Funktion deklarieren PHP-Fortgeschrittene 0 10.12.2004 14:40

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
preg_replace innerhalb, preg_replace htmlspecialchars, htmlspecialchars preg_replace, php preg_replace htmlspecialchars, str_replace html tag, $text = htmlspecialchars($text, ent_quotes);, php html entwerte, htmlspecialchars source code, $txt = str_replace, htmlspecialchars nur innerhalb <pre>, htmlspecialchars macht nichts, htmlspecialchars funktion, good preg_replace html special chars, php preg_replace bbcode htmlspecialchars, preg_replace and html specail chars, htmlspecialchars in preg_replace, preg_replace vs htmlspecialchars, htmlspecialchars(str_replace(\\\\'\, \\, str_replace mit funktionsaufruf, funktion in preg_replace aufrufen

Alle Zeitangaben in WEZ +2. Es ist jetzt 20:41 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.