#1 8. Juli 2010 String durchsuchen & ersetzen Hallo, ich als PHP-Noob hab folgendes Problem: Ich habe einen String in dem mehrere (oder gar keine) bestimmte Strings vorkommen. Diese sollen nun rot geschrieben werden. Praktisches Beispiel: PHP: $comment = "Dies ist ein Text. >>1857 Apropos, ich finde dein Bild schön. >>1850 deins ist allerdings hässlich." Die Strings ">>1857" und ">>1850" sollen nun irgendwie mit PHP gefunden und ersetzt werden (mit z.b. "[font color="red"]>>1857[/font]"). Was zu bemerken ist: die strings die ich suche sind immer so aufgebaut: ">>" + integer Vielen Dank + Multi-Zitat Zitieren
#2 9. Juli 2010 AW: String durchsuchen & ersetzen Mal fixx zusammen geschraubt. Sieht auch so aus als wenn es gehen würde ... PHP: <? php $text = "Dies ist ein Text. >>1857AVD Apropos, ich finde dein Bild schön. >>1850 deins ist allerdings hässlich." ; echo 'Alter Text: ' . $text . "<br />" ; $text = preg_replace ( '@([>>>0-9]+)@sim' , '<strong style="color:red">$1</strong>' , $text ); echo 'Neuer Text: ' . $text ; ?> LG + Multi-Zitat Zitieren
#3 9. Juli 2010 AW: String durchsuchen & ersetzen Huhu, Vielen Dank, das funktioniert Allerdings habe ich ein neues Problem bekommen: Das Script soll jetzt zuerst in einem Array nachschauen, ob die bestimmte Nummer (>>Nummer) True oder False zugewiesen ist. Dementsprechend soll es grün oder rot sein. Ich probier das mal, melde mich hier wenn es nicht geklappt hat. PS: Es dürfen nur genau zwei ">>" vor dem int sein + Multi-Zitat Zitieren
#4 9. Juli 2010 AW: String durchsuchen & ersetzen zu problem 1 und 2: PHP: <? php $num = array( 1857 => true , 1850 => false ); $string = 'Dies ist ein Text. >>1857AVD Apropos, ich finde dein Bild schön. >>1850 deins ist allerdings hässlich.' ; $string = preg_replace ( '/>>(\d+)/e' , '\'<strong style="color:\' . ($num[\\1] ? \'green\' : \'red\') . \';">\\1</strong>\'' , $string );print $string ; sollte gehen + Multi-Zitat Zitieren
#5 9. Juli 2010 AW: String durchsuchen & ersetzen Huhu, Jop. Das klappt auch einwandfrei. Allerdings will ich noch einige Anpassungen vornehmen - könnte man das ganze nicht anders machen so nach dem Schema: 1. alle Stellen in dem String finden 2. alle Stellen in ein Array packen 3. // einige sachen machen (z.B. Datenbank-Verbindung herstellen, je nach Fall...) 4. alle Stellen wieder modifiziert zurückpacken 5. String ausgeben + Multi-Zitat Zitieren
#6 9. Juli 2010 AW: String durchsuchen & ersetzen PHP: <? php $num = array( 1857 => true , 1850 => false ); $string = 'Dies ist ein Text. >>1857AVD Apropos, ich finde dein Bild schön. >>1850 deins ist allerdings hässlich.' ; $string = preg_replace ( '/>>(\d+)/e' , 'handle_number(\\1)' , $string );print $string ; // --------------- function handle_number ( $number ) { //mach was mit $number //z.b. global $num ; $color = (!empty( $num [ $number ])) ? 'green' : 'red' ; $number = sprintf ( '<strong style="color:%s;">%u</strong>' , $color , $number ); //einfach zurückgeben return $number ;} wenn du die nummern mit ner db abgleichen willst, wäre es besser alle nummern zuvor zu extrahieren um nur das nötigste aus der db zu laden. das geht so: PHP: <? php$numbers = array(); preg_match_all ( '/>>(\d+)/' , $string , $numbers ); $numbers = $numbers [ 1 ]; //alle nummern im text befinden sich nun in $numbers + Multi-Zitat Zitieren
#7 9. Juli 2010 AW: String durchsuchen & ersetzen Vielen vielen Dank Klappt alles super! Hätte bloss noch eine Frage: Es sollen nicht nur Numbern, sondern alle Zeichen den Check durchlaufen (also die Stelle PHP: $comment = preg_replace ( '/>>(\d+)/e' , 'handle_number(\\1)' , $comment ); PHP: '/>>(\d+)/e' ) muss geändert werden. Wie mache ich das nur? :O Das grün markierte soll z.b. erfasst werden: Code: Dies ist ein Text. [COLOR="Lime"]>>Dieser Text handelt um viele Sachen. Kuchen.[/COLOR] Jawoll, sehr interessant. edit: Hab immerhin schon rausgefunden wie er das erste Wort nimmt, nicht aber den Text bis Zeilenumbruch / Blockquote (wenn es keinen Zeilenumbruch hat wirds per [/blockquote] beendet) + Multi-Zitat Zitieren
#8 9. Juli 2010 AW: String durchsuchen & ersetzen Was hast du denn genau vor??? Willst du Success und Error Meldungen in deinen Text einbauen? Ich glaube du machst es dir viel zu kompliziert, auch wenn ich nicht mal verstehe worauf du hinaus willst. Wenn du nämlich nur Erfolgs- und Fehlermeldungen einbauen willst, geht das auch einfacher. Wenn du Platzhalter willst, wie in einem Template -> Template Engine mit Start und Stopp Zeichen (Bsp: >>Platzhalter das wird ersetzt !! <<) Nicht das die Leute dir hier ewig helfen und das ganze völlig ausartet und sinnlos ist + Multi-Zitat Zitieren
#9 18. Juli 2010 AW: String durchsuchen & ersetzen Mal eben OffTopic: Wieso siehst du dir das ganze nicht einfach auf selfhtml oder CO an? PHP: preg_match - Manual wenn hier alle deine schnipsel coden bringts dir ja nix... + Multi-Zitat Zitieren