php.de

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

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 27.10.2006, 16:04  
Erfahrener Benutzer
 
Registriert seit: 12.07.2005
Beiträge: 279
max-dhom
max-dhom eine Nachricht über MSN schicken
Standard Problem mit preg_replace

Hallo zusammen,

ich habe ein kleises skript, dass mir in alten Mitschnitten von Chat-Konferenzen die Namen der "Sprecher" einfärbt.
Der Text hat immer folgende Form:
[19:00] Sprecher1: xxxxx
[20:00] Sprecher2: yyyyy

Ich will jetzt aber auch, dass er die Zeit ebenso einfärbt, wie den Namen!
jetzt habe ich dazu mir folgendes gedacht:
Code:
	$text2 = preg_replace("|\[(.*?):(.*?)\] $nick1:|Uism","<span style='color: $farbe1; '>[$1:$2] $nick1:</span>",$text1);
Leider kommt dann dabei folgendes raus:
Code:
<span style='color: #FF0000; '><span style='color: #009900; '>[10:00] Max:</span> Juhuu!

[12:00] Momo:</span> Na und?
d.h. er setzt den Farb-Code immer GANZ an den anfang, und nicht direkt vor das betreffende!

Wie kann ich das ändern?

Danke,
Max[/quote]
max-dhom ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 27.10.2006, 17:36  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Du mußt dich entscheiden, ob du den Parameter U oder .*? benutzt. So versucht preg möglichst viele Zeichen, d.h. vom ersten [ bis zum letzten ] zu erkennen. U kehrt die Bedeutung von ? um
nikosch ist offline  
Alt 27.10.2006, 18:01  
Erfahrener Benutzer
 
Registriert seit: 12.07.2005
Beiträge: 279
max-dhom
max-dhom eine Nachricht über MSN schicken
Standard

hm ich habe jetzt das U überall weggemacht, und es kommt immernoch der gleiche Code raus!
Noch eine Idee?

Vielen Dank,
Max
max-dhom ist offline  
Alt 27.10.2006, 19:22  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

kann doch eig. nicht sein. kannst mal n bischen mehr code posten, vielleicht noch die schleife mit Namen und Farbauswahl?
nikosch ist offline  
Alt 27.10.2006, 20:23  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

preg_replace("#\[(\d{2}:\d{2}\)\] $nickname:#is", "[<span class="colorX">$1</span>] $nickname:", $sString);
Zergling-new ist offline  
Alt 27.10.2006, 20:55  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

ich glaub nicht, daß das nen unterschied macht. außerdem fehlen die escapes für die eckigen klammern.
nikosch ist offline  
Alt 27.10.2006, 21:24  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Stimmt.
Zergling-new ist offline  
Alt 28.10.2006, 10:12  
Erfahrener Benutzer
 
Registriert seit: 12.07.2005
Beiträge: 279
max-dhom
max-dhom eine Nachricht über MSN schicken
Standard

Code:
	//error_reporting(E_ALL);
	$text1 = nl2br($text);
	$text2 = preg_replace("|\[(.*?):(.*?)\] $nick1:|ism","<span style='color: $farbe1; '>[$1:$2] $nick1:</span>",$text1);
	
	$text3 = preg_replace("|\[(.*?)\] $nick2:|ism",  "<span style='color: $farbe2; '>[$1] $nick2:</span>",  $text2);
so habe ich das hier.. die letzten 2 Zeilen werden halt pro User dann wiederholt...

Danke,
Max
max-dhom ist offline  
Alt 28.10.2006, 13:29  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

ist wirklich schwer zu sagen. könnte z.b. sein, daß du die nicknames mit preg_quote bearbeiten mußt. sonst sehe ich hier nix. deswegen meine frage nach der schleife, wie die usernames den farben zugeordnet werden oder so. warum machst du die zweite ersetzung, die ohne : im []. gibts auch angeben ohne zeit?
nikosch ist offline  
Alt 28.10.2006, 14:15  
Erfahrener Benutzer
 
Registriert seit: 12.07.2005
Beiträge: 279
max-dhom
max-dhom eine Nachricht über MSN schicken
Standard

hmm jetzt habe ich noch ein Problem:

ich will meldungen in der Form "*** Meldung ***" ebenfalls einfärben, und hätte dazu folgenden Code:

Code:
 $text = preg_replace("!/*/*/* (.*?) /*/*/*!","<font> $1 </font>",$text);
er erzeugt mir dann aber das <font> Tag ZWISCHEN den *** was mache ich da flasch? ich werde noch verrückt mit diesem preg_replace ..
Bzw. was ich auch nicht verstehe: das $1 steht doch normalerweise dann für den Text der zwischen den *** steht, oder? Warum erzeugt er mir dann trotzdem die *** in der ausgabe?

Danke,
Max
max-dhom 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
[Erledigt] Galerie Problem... coraplanet PHP Tipps 2008 4 06.06.2008 13:42
Sessions Problem StephenKing PHP Tipps 2008 3 16.10.2007 08:30
datensätze defekt oder problem mit dem einlesen? Ministry Datenbanken 4 06.07.2006 18:42
problem!!! PHP Tipps 2006 6 08.02.2006 11:06
[Erledigt] wieder ein Problem bei phpmailer und smtp PHP Tipps 2006 24 07.02.2006 01:07
[Erledigt] Problem bei Massenmails versenden mit der Funktion mail PHP-Fortgeschrittene 3 19.01.2005 13:36
[Erledigt] Problem mit Übergabe einer Klasse in PHP4 PHP-Fortgeschrittene 10 08.01.2005 21:00
Problem mit Weiterleitung PHP Tipps 2004-2 16 22.12.2004 17:49
Smarty und PHP-Skript Problem PHP Tipps 2004-2 2 03.12.2004 22:27
[Erledigt] PHP Upload (Master Value/Local Value Problem) PHP-Fortgeschrittene 5 23.11.2004 07:21
Problem mit alter JavaScript-Funktion woods PHP Tipps 2004 1 13.08.2004 13:34
[Erledigt] Problem mit Timestamp! PHP Tipps 2004 24 08.06.2004 19:51
Login Problem PHP Tipps 2004 4 04.06.2004 18:46
foreach problem mAy^daY PHP Tipps 2004 3 02.06.2004 20:29

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php preg_replace \/ism\

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