php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2010

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 03.05.2010, 10:51  
Kein Genie
Gast
 
Beiträge: n/a
Standard String Highlighten

Moin..

Ich habe eine kleine Funktion, um einen PHP String zu highlighten:

PHP-Code:
$bbcode preg_replace("~\[php\](.+?)\[/php\]~smi"'<div class="code">'.highlight_string('\\1'true).'</div>'$bbcode); 
Die Tags werden richtig ersetzt und auch alles schön in den Div geschrieben, aber der String wird aus einem mir unerfindlichen Grund einfach nicht gehiglightet.

Könnt ihr mir vielleich helfen?

Danke
 
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 03.05.2010, 10:55  
da schreibt der ElePHPant
 
Benutzerbild von Flor1an
 
Registriert seit: 18.06.2008
Beiträge: 8.903
PHP-Kenntnisse:
Fortgeschritten
Flor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer Anblick
Standard

Du kannst so in preg_replace auch keine Funktion aufrufen. Es würde ja ERST highlight_string() aufgerufen werden mit dem String "\\1" und die Rückgabe würde dann zwischen die <div> geschrieben werden. UND DANN würde preg_replace aufgerufen werden mit dem entsprechendem String.

Was du suchst ist vlt. eher: PHP: preg_replace_callback - Manual
Flor1an ist offline  
Alt 03.05.2010, 11:45  
Erfahrener Benutzer
 
Registriert seit: 01.12.2009
Beiträge: 645
PHP-Kenntnisse:
Fortgeschritten
draco88 befindet sich auf einem aufstrebenden Ast
draco88 eine Nachricht über ICQ schicken
Standard

Unter PHP 5.3 funktionierts so

PHP-Code:
$bbcode preg_replace_callback("~\[php\](.+?)\[/php\]~smi", function($matches) {
    return 
'<div class="code">' highlight_string($matches[1], true) . '</div>';
}, 
$bbcode
draco88 ist offline  
Alt 03.05.2010, 11:57  
Kein Genie
Gast
 
Beiträge: n/a
Standard

Ok,

habe jetzt mal meine Funktion überarbeitet:

PHP-Code:
function php_bb($s)
{
    
$suche = array('!\[php\](.+)\[\/php\]!iUse');
    
$ersetzung = array('<div class="code">'.highlight_string('$1'true).'</div>');
    
$s preg_replace($suche$ersetzung$s); 
    
    return 
$s;

Jetzt bekomme ich immer folgende Fehlermeldung:

Parse error: syntax error, unexpected '<' in /var/www/web517/html/betapage/functions/functions.php(565) : regexp code on line 1

Zitat:
Fatal error: preg_replace() [<a href='function.preg-replace'>function.preg-replace</a>]: Failed evaluating code: &lt;div class=&quot;code&quot;&gt;&lt;code&gt;&lt;span style=&quot;color: #000000&quot;&gt; &lt;?php echo \\\'kleiner test\\\'; ?&gt; &lt;/span&gt; &lt;/code&gt;&lt;/div&gt; in /var/www/web517/html/betapage/functions/functions.php on line 565
 
Alt 03.05.2010, 12:35  
da schreibt der ElePHPant
 
Benutzerbild von Flor1an
 
Registriert seit: 18.06.2008
Beiträge: 8.903
PHP-Kenntnisse:
Fortgeschritten
Flor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer Anblick
Standard

Weil du exakt das selbe Problem hast. PHP führt ERST die Funktionen aus. Heißt highlight_string wird ERST ausgeführt mit dem Inhalt $1, dabei wird wohl $1 rauskommen. Heißt im Array steht dann
[code]<div class="code">$1</div>[code]

Und erst DANN wird preg_replace ausgeführt und zwar mit dem Array von oben.

Aber les bitte nochmal die beiden Beiträge oben!
Flor1an ist offline  
Alt 03.05.2010, 12:54  
Kein Genie
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von draco88 Beitrag anzeigen
Unter PHP 5.3 funktionierts so

PHP-Code:
$bbcode preg_replace_callback("~\[php\](.+?)\[/php\]~smi", function($matches) {
    return 
'<div class="code">' highlight_string($matches[1], true) . '</div>';
}, 
$bbcode
Habe mir es nochmal angeschaut.
Jetzt verstehe ich das mit dem callback auch. Danke.
Allerdings, bekomme ich bei deinem Lösungsansatz immer eine Fehlermeldung:

Parse error: syntax error, unexpected T_FUNCTION in /var/www/web517/html/betapage/functions/functions.php on line 556
 
Alt 03.05.2010, 13:51  
Erfahrener Benutzer
 
Registriert seit: 05.02.2009
Beiträge: 1.401
PHP-Kenntnisse:
Fortgeschritten
Destruction ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ersetze function... durch
PHP-Code:
create_function('$matches','return......'); 
Da hättest du auch selbst drauf kommen können, wenn du das manual angeschaut hättest!
__________________
"Dummheit redet viel..Klugheit denkt und schweigt.." [Amgervinus]
Destruction ist offline  
Alt 03.05.2010, 14:35  
Erfahrener Benutzer
 
Registriert seit: 07.06.2008
Beiträge: 992
PHP-Kenntnisse:
Fortgeschritten
Frank befindet sich auf einem aufstrebenden Ast
Frank eine Nachricht über ICQ schicken Frank eine Nachricht über MSN schicken Frank eine Nachricht über Yahoo! schicken
Standard

natürlich kann man auch mit preg_replace arbeiten! Man muss es nur richtig anwenden!

PHP-Code:
function php_bb($s)
{
    
$suche = array('!\[php\](.+)\[\/php\]!iUse');
    
$ersetzung = array('"<div class=\"code\">".highlight_string("$1", true)."</div>"');
    
$s preg_replace($suche$ersetzung$s); 
    
    return 
$s;

__________________
Frank ist offline  
Alt 03.05.2010, 14:38  
Kein Genie
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von Destruction Beitrag anzeigen
Ersetze function... durch
PHP-Code:
create_function('$matches','return......'); 
Da hättest du auch selbst drauf kommen können, wenn du das manual angeschaut hättest!
Habe es auch so gemacht.
Habe zu schnell gepostet.
Sorry
 
Alt 03.05.2010, 19:25  
da schreibt der ElePHPant
 
Benutzerbild von Flor1an
 
Registriert seit: 18.06.2008
Beiträge: 8.903
PHP-Kenntnisse:
Fortgeschritten
Flor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer Anblick
Standard

Zitat:
Zitat von Frank Beitrag anzeigen
natürlich kann man auch mit preg_replace arbeiten! Man muss es nur richtig anwenden!

PHP-Code:
function php_bb($s)
{
    
$suche = array('!\[php\](.+)\[\/php\]!iUse');
    
$ersetzung = array('"<div class=\"code\">".highlight_string("$1", true)."</div>"');
    
$s preg_replace($suche$ersetzung$s); 
    
    return 
$s;

Und wenn das dann im BBCode steht kann jeder PHP Code ausführen oder wie?
Flor1an ist offline  
 


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
Alle Zeilen wo Spalte in String vorkommt / LIKE? scub Datenbanken 2 11.03.2010 00:08
Scriptangebot Codieren von Texten Ryuuzaki93 Scriptbörse 9 08.02.2010 23:14
Records mit PHP ? SimStar001 PHP Tipps 2009 11 08.04.2009 15:14
Persistence Framework #Avedo Software-Design 37 28.03.2009 17:32
Hashfunktion String -> Integer Flor1an PHP Tipps 2009 10 26.02.2009 01:16
string in string suchen,ersetzen,zusammenfügen und update machen litterauspirna PHP Tipps 2009 24 08.01.2009 13:38
PHP5 SOAP - Problem mit Arrays Calexico PHP-Fortgeschrittene 0 11.09.2008 12:06
Event abfangen Ambience JavaScript, Ajax und mehr 4 30.08.2007 14:36
Alle Felder nach String durchsuchen Jacks Rache Datenbanken 6 08.08.2005 09:46
In allen Spalten nach String suchen Jacks Rache Datenbanken 0 05.08.2005 20:15
In allen Tabellen nach String suchen Jacks Rache Datenbanken 0 05.08.2005 11:18
String in allen Spalten suchen Jacks Rache Datenbanken 0 05.08.2005 09:43
Alle Spalten nach String durchsuchen Jacks Rache Datenbanken 0 05.08.2005 09:41
where string von einer funktion zu anderen transportieren PHP Tipps 2005 5 03.03.2005 16:29
[Erledigt] String mit Leerzeichen auffüllen HTML, Usability und Barrierefreiheit 2 27.10.2004 18:47

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php string highligten, string highlighten, php string zwischen 2 highlighten, bbcode highlight_string, skype

Alle Zeitangaben in WEZ +2. Es ist jetzt 21:39 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