php.de

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

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 21.02.2008, 14:59  
obi
Erfahrener Benutzer
 
Registriert seit: 26.06.2004
Beiträge: 270
obi
Standard preg_replace Tabellenzeilen färben

Hallo, mit folgendem Code las ich mir eine Tabelle erstellen

Code:
$text = preg_replace("~\[cheattabelle\](.*?)\[\/cheattabelle\]~","<div class=\"cheat_tabelle\"><table><tr><th>Cheat</th><th>Wirkung</th></tr>\\1</table></div>",$text);
	
	$text = preg_replace("~\[c\](.*?)\[\/c\]~","<tr><td>\\1</td></tr>",$text);
	
	$text = preg_replace("~---~","</td><td>",$text);
So wird aus
Zitat:
[cheattabelle]
[c]iddqd --- godmode[/c]
[c]idkfa --- alle waffen[/c]
[c]iddqd --- godmode[/c]
[c]iddqd --- godmode[/c]
[c]iddqd --- godmode[/c]
[c]iddqd --- godmode[/c]
[/cheattabelle]
beispielsweise eine nette Cheattabelle.

Ich möchte nun aber jede zweite Reihe in einer anderen Farbe darstellen und hab dafür in css eine Klasse erstellt, nur wie bekomm ich die jetzt in dem preg_replace noch unter, das wird ja irgendwie in einem Rutsch bearbeitet und da das Trennungszeichen nur [c] ist kann ich keine Rückschlüsse ziehen, ob es nun eine gerade oder eine ungerade Zeile ist die formatiert wird.

Grüße
Obi
obi ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 21.02.2008, 15:32  
Erfahrener Benutzer
 
Registriert seit: 16.07.2005
Beiträge: 1.007
PHP-Kenntnisse:
Fortgeschritten
brian johnson befindet sich auf einem aufstrebenden Ast
Standard

am besten wärs du nimmst die string funktionen.

alternativ kannst du mit umwegen auch preg_match_all benutzen
__________________
PHP4?!?>>>Aktuelle PHP Version: 5.2.11 || 5.3.0
Suse 11.2 *vorfreude*
brian johnson ist offline  
Alt 21.02.2008, 16:28  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.989
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

Dein Engagement für reguläre Ausdrücke in allen Ehren, aber an dieser Stelle sind es erstens zuviele (Performance) und zweitens unnütze dabei (der letzte ist bspw. durch ein str_replace ersetzbar).

Ich würde hier auch ein preg_match nutzen, mit dem ich die Tags [cheattabelle] und [c] gleichzeitig matche und [c] Elemente auslese. Leider überschreibt bei einer Teil-Angabe
Code:
(?:\[c\](.*?)\s*---\s*(.*?)\[/c\]\s*)*
jedes Matching das vorhergehende, so dass doch vorher der [cheattabelle] Bereich herausgelöst werden muß.

PHP-Code:
$sData '
[c]do not --- match[/c]
[cheattabelle]
[c]iddqd1 --- godmode[/c]
[c]idkfa --- alle waffen[/c]
[c]iddqd2 --- godmode[/c]
[c]iddqd3 --- godmode[/c]
[c]iddqd4 --- godmode[/c]
[c]iddqd5 --- godmode[/c]
[/cheattabelle] 

Some
Stuff to ignore
[cheattabelle]
[c]one more --- cheating[/c]
[/cheattabelle] 

'
;

# -- cheat Definitionen zusammenstellen
$iEnd 0;
$sCheats '';
do
  {
  
$iStart strpos ($sData '[cheattabelle]' $iEnd);
  
$iEnd   strpos ($sData '[/cheattabelle]' $iStart);
  if (
false === $iStart) break;
  
$iStart += 14;
  
$sCheats .= substr ($sData $iStart $iEnd-$iStart);
  
$i++;
  }
while (
1);

# -- cheats herauslösen
preg_match_all ('#\[c\](.*?)\s*---\s*(.*?)\[/c\]\s*#' $sCheats $aFound);

print_r (array_combine ($aFound[1] , $aFound[2])); 
nikosch ist offline  
Alt 21.02.2008, 20:38  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Hört doch auf für jeden Scheiss eigene Dateiformate zu entwickeln .. Und warum man das jetzt auch noch mit Regulären Ausdrücken machen muss .. Ich verstehs nicht. Durchlauf das Ding in ner Schleife, dann kannste das Ding beliebig anpassen. RegExp sind nicht allmächtig.
Zergling-new 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
Tabellenzeilen bei onmouseover highlighten Zergling-new Tutorials 14 23.04.2008 14:28
Tabellenzeilen ausblenden/einfügen HTML, Usability und Barrierefreiheit 3 21.10.2005 13:54
Tabellenzeilen "<tr>" dünner machen... Plague HTML, Usability und Barrierefreiheit 3 28.08.2005 18:46
Tabellenzeilen in unterschiedlichen Farben PHP Tipps 2004 7 08.11.2004 14:18

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
preg_replace ungerade, php tabellenzeile einfärben, php gerade ungerade preg_replace_callback, preg_replace tabelle, td class font color, tabellenreihen färben php, php tabellenzeilen einfärben, preg_replace innerhalb färben, preg_replace und wort einfärben, preg_replace auf tabelle, hexcode preg_replace, php preg_replace <tr>, färben von tabellenzeilen in html, bb-code tabelle erzeugen reguläre ausdruck, php preg_replace <th>, tabellen einfärben css, tabelle(zeilen(wahl(tabelle( )))), php tabelle einfärben, preg_replace php table, css tabelle 2. zeile farbig formatieren

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