WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Programmierung

Programmierung Rat & Tat für Programmierer

Microsoft KARRIERECAMPUS

Antwort
 
Themen-Optionen Ansicht
Alt 26.02.2007, 22:05   #1
Potassium
Inventar
 
Registriert seit: 06.03.2003
Alter: 37
Beiträge: 3.954

Mein Computer

Standard Regexp bbCode ersetzen

Folgender Code soll aus einem Text ($text) gewisse Begriffe automatisch in andere umwandeln. in $replace_arr steht die Info dafür drin.
Nun ist das Problem, dass zb URIs die in der Form
[ url= http://potassium.1338.at ] Potablog [/ url ] oder [ url ] http://potassium.1338.at [/ url ] (Abstände wegdenken) NICHT mehr umgewandelt werden soll auch wenn sich innerhalb der Klammern etwas befindet, dass sonst umgewandelt gehört.
Beispiel
Google ersetze mit [ url ]www.google.at[/ url ]
[ url ]http://potassium.1338.at/google.php[/ url ] soll nicht ersetzt werden.
Hier nun der Code mit dem Regexp
PHP-Code:
foreach($replace_arr as $key => $value){
        
$modifier = (!empty($value["CASE_INSENSITIVE"]) ? "i" "");
        
$text preg_replace("/(.*?)[^\]]".$value["SRC"]."[^\[](.*?)/".$modifier,"$1$2".$value["REPLACE"]."$3$4",$text);
    } 
Kann mir da jemand weiterhelfen?
Potassium ist offline   Mit Zitat antworten
Alt 06.03.2007, 21:50   #2
Potassium
Inventar
 
Registriert seit: 06.03.2003
Alter: 37
Beiträge: 3.954

Mein Computer

Standard

*push*
Interessiert das niemanden oder hat da echt niemand ne Ahnung?
Potassium ist offline   Mit Zitat antworten
Alt 07.03.2007, 00:35   #3
iG0r
Gesperrt
 
Registriert seit: 14.08.2003
Alter: 47
Beiträge: 915


Standard

Die Lösung scheint mir ganz einfach, sofern ich dein Problem richtig verstenden habe.

Du musst ja dem Script sagen, welche URL nicht in einen Link umgewandelt werden soll. Die URL-Liste, mit den Links die nicht in einen HTML Link umgewandelt werden sollen, kannst du mit einen array search und if - else in das foreach einbauen.
iG0r ist offline   Mit Zitat antworten
Alt 07.03.2007, 11:39   #4
T.dot
Master
 
Registriert seit: 13.08.2003
Beiträge: 624


Standard

Hab ich dich richtig verstanden:
- Du hast ne regex um aus [url ]blabla[/url ] bzw. [url =blabla ] beschreibung[/url ] einen beschreibung zu machen
- Du hast ne Regex um aus [url ]www.blabla.at[/url] nen beschreibung zu machen?
- Du willst nicht, dass aus [url ]www.blabla.at[/url ] [url ]blabla[/url ] wird


Falls dem so ist dann würd ich die www.blabla.at links nicht in <a href= sondern in [url ]http://www.blabla.at[/url ] umwandeln.

Wenn du allerdings einzelne Links ausschließen willst, musst du eben in der Regex diese angeben (nur wenn nicht link a oder link b oder link c, dann wandel um)

mfg Thomas

edit: kann man hier ned für einen Beitrag den vbCode abdrehen? auch zach... und das urls nicht automatisch umwandeln funktioniert auch nur bedingt...
T.dot ist offline   Mit Zitat antworten
Alt 07.03.2007, 16:07   #5
pong
Inventar
 
Benutzerbild von pong
 
Registriert seit: 25.12.2000
Alter: 41
Beiträge: 9.063

Mein Computer

pong eine Nachricht über ICQ schicken
Standard

Zitat:
Original geschrieben von Potassium
*push*
Interessiert das niemanden oder hat da echt niemand ne Ahnung?
Wozu das Rad neu erfinden? http://pear.php.net/package/HTML_BBCodeParser

pong
____________________________________
\"Ein Gewitter reinigt die Luft\", sagte der Mann, nachdem ein Blitz seine Frau erschlug

Nicht klicken!


Erstposteralarm/Beschwerde/Kummerkasten


Verplattet
pong ist offline   Mit Zitat antworten
Alt 07.03.2007, 16:39   #6
void
Hero
 
Benutzerbild von void
 
Registriert seit: 26.07.2001
Ort: Wien
Beiträge: 811


Standard

ich verstehe leider das problem nicht ganz...
____________________________________
nobody is perfect
void ist offline   Mit Zitat antworten
Alt 11.03.2007, 22:11   #7
Potassium
Inventar
 
Registriert seit: 06.03.2003
Alter: 37
Beiträge: 3.954

Mein Computer

Standard

Es gibt eine Funktion, die automatisch zb "rofl" mit dem bbCode für einen Rofl-Smilie ersetzen soll. Wenn nun aber der Name des ROFL-Smilies selbst rofl enthällt, wird dieser wieder ersetzt. Verstanden soweit?
Nun soll eben rofl nur ersetzt werden, wenn es noch nicht in einem bbCode steht. Das PEAR-Package will ich ned benutzen, weils sehr überladen ist und ich es verstehn und selbst machen will. Müsste es sonst auch ans ganze Projekt anpassen. Daher lieber das Rad neu erfinden.
Potassium ist offline   Mit Zitat antworten
Alt 12.03.2007, 09:47   #8
void
Hero
 
Benutzerbild von void
 
Registriert seit: 26.07.2001
Ort: Wien
Beiträge: 811


Standard

okay, jetzt kapier ich es - du willst einfach einen teilstring max. 1x ersetzen und das war es dann für diesen teil...

*grübel* wenn mir etwas einfällt, werde ich es schreiben
____________________________________
nobody is perfect
void ist offline   Mit Zitat antworten
Alt 12.03.2007, 12:05   #9
void
Hero
 
Benutzerbild von void
 
Registriert seit: 26.07.2001
Ort: Wien
Beiträge: 811


Standard

zum verständnis ein beispiel: (ich verwende jetzt einfach runde klammern)
(url)www.lol.com(/url) wird normalerweise in www..com umgewandelt, dein erwünschtes ergebnis soll aber so aussehen: www.lol.com, oder?

das ist glaube ich sehr kompliziert... und in der jetzigen struktur nicht möglich, denn: du gehst alle möglichen ersetzungen der reihe nach durch wie sie in dem array stehen, soll heißen: wenn du nun die ersetzungen vornimmst und dir den bereits "abgearbeiteten" text merkst, erhältst du eine gewichtung; z.B. wenn zuerst [url] abgearbeitet wird und erst danach lol, erhältst du das gewünschte ergebnis...

wenn du aber generell in einem bereits ersetzten teil auf keinen fall weiter ersetzen willst, darfst du nicht alle ersetzungen (z.b. [url]) auf einmal machen, sondern du musst zuerst das erste klammernpaar finden und ersetzen, danach das zweite, usw. dabei musst du dir natürlich auch merken, was du bereits ersetzt hast...
____________________________________
nobody is perfect
void ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

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

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 21:49 Uhr.


Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Forum SEO by Zoints
© 2009 FSL Verlag