![]() |
![]() |
|
![]() |
![]() |
|
Programmierung Rat & Tat für Programmierer |
![]() |
|
Themen-Optionen | Ansicht |
![]() |
#1 |
Inventar
![]() |
![]() 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:
|
![]() |
![]() |
![]() |
#2 |
Inventar
![]() |
![]() *push*
Interessiert das niemanden oder hat da echt niemand ne Ahnung? |
![]() |
![]() |
![]() |
#3 |
Gesperrt
Registriert seit: 14.08.2003
Alter: 47
Beiträge: 915
|
![]() 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. |
![]() |
![]() |
![]() |
#4 |
Master
![]() Registriert seit: 13.08.2003
Beiträge: 624
|
![]() 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 ![]() 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... |
![]() |
![]() |
![]() |
#5 | |
Inventar
![]() |
![]() Zitat:
pong
____________________________________
\"Ein Gewitter reinigt die Luft\", sagte der Mann, nachdem ein Blitz seine Frau erschlug Nicht klicken! Erstposteralarm/Beschwerde/Kummerkasten Verplattet |
|
![]() |
![]() |
![]() |
#6 |
Hero
![]() Registriert seit: 26.07.2001
Ort: Wien
Beiträge: 811
|
![]() ich verstehe leider das problem nicht ganz...
____________________________________
nobody is perfect |
![]() |
![]() |
![]() |
#7 |
Inventar
![]() |
![]() 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. |
![]() |
![]() |
![]() |
#8 |
Hero
![]() Registriert seit: 26.07.2001
Ort: Wien
Beiträge: 811
|
![]() 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 |
![]() |
![]() |
![]() |
#9 |
Hero
![]() Registriert seit: 26.07.2001
Ort: Wien
Beiträge: 811
|
![]() zum verständnis ein beispiel: (ich verwende jetzt einfach runde klammern)
(url)www.lol.com(/url) wird normalerweise in www. ![]() 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 |
![]() |
![]() |
![]() |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
|
|