Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Najdłuższe dowolne wyrażenie, Problem z wyrażeniami regularnymi
Orzeszekk
post
Post #1





Grupa: Zarejestrowani
Postów: 260
Pomógł: 14
Dołączył: 8.09.2011

Ostrzeżenie: (0%)
-----


Witam. W wyrazeniach regularnych PERL-a użycie wyrażenia (.*?) we wzorcu powoduje wyszukanie najkrótszego dowolnego wzorca.

Wyrazenie (.*) czy tam (.?) (juz nie pamietam) powoduje wyszukanie najdłuzszego dowolnego wzorca.

Czy jest mozliwosc wyszukania dowolnego najdłuższego wzorca?

potrzebuje tego do parsera ktory wytnie z kodu HTML te znaczniki ktore da sie zamienic na bbcode.

wyrazenie

<span style="color: red">tekst czerwony <span style="font-style: italic">i pochylony</span></span>

nie zamienia sie poprawnie na tekst czerwonyi pochylony

tylko wychodzi tekst czerwony<span style="font-style: italic">.

Cos takiego wychodzi. W kazdym razie powinien skoczyc do najdalszego znacznika span, a on skacze do najkrótszego.
Nie da sie uzyc <b> <i> <u> poniewaz po wlaczeniu contentEditable w mozilli wykonanie polecenia mozilli exec("Bold") powoduje wstawienie do kodu nie <b> a wlasnie <span style="Font-weight: bold">...
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Orzeszekk
post
Post #2





Grupa: Zarejestrowani
Postów: 260
Pomógł: 14
Dołączył: 8.09.2011

Ostrzeżenie: (0%)
-----


Po to ze mam na stronie edytor wizualny ktory pozwala na edycje w trybie wysiwyg. I wypluwa on jako wynik HTML ktory trzeba zamienic na bbcode, to co zostanie objechac html special chars oraz strip tags i zamienic z powrotem na bezpieczny html ktory mozna wyswietlic na stronie.

I po to że jeżeli edytor wizualny zawiedzie aby uzytkownicy mogli włączyc sobie zwykly edytor BBCode. Wtedy rowniez trzeba zamienic HTML trzymany w bazie na bbcode aby umozliwic im edycje. Nie jestem w stanie zrobic ani sciagnac edytora Wysiwyg ktory bedzie działał na kazdej przegladarce wiec musi byc rozwiazanie alternatywne.

Ok, znalazlem klase SimpleHTMLDomParser, zapowiada sie swietnie.

Zastanawiam sie nad dwoma podejsciami do tematu:
Przeskanowac cale drzewo dokumentu (parser tworzy drzewo DOM) i tam gdzie znajde atrybut "color" tworzyc [color] wokol zawartosci znacznika, gdzie znajde np p tworzyc [p], po zrzuceniu zawartosci drzewa do html bedzie to wygladalo np:
<font color="red">blablabla</font>
nastepnie wyciąć tagi strip_tags, a pozniej dla bezpieczenstwa zaaplikowac html special chars,

lub po prostu przejrzec drzewo DOM i znaczniki które nie są <b> <i> <u> itd.. oraz atrybuty ktore nie są color="xxxx" itd itd.

Rozwiazanie pierwsze jest bardziej klopotliwe, drugie pozwalaloby na wklejenie tekstu bezposrednio z innej strony lub z edytora z zachowaniem formatowania, ale jak mi ktos przemyci w jakims znaczniku onload="java script: <tu wstaw jakis destrukcyjny js>" to tez nie bedzie wesoło.

Ten post edytował Orzeszekk 26.10.2011, 00:25:40
Go to the top of the page
+Quote Post

Posty w temacie
- Orzeszekk   Najdłuższe dowolne wyrażenie   25.10.2011, 15:53:16
- - mikiz65   Spróbuj użyć funkcji strp_tags. Wycina znaki HTML ...   25.10.2011, 18:12:04
- - Orzeszekk   Nie chodzi o to by sie ich pozbyc (banał) tylko po...   25.10.2011, 20:49:34
- - croc   Nie do końca rozumiem. Podaj przykładową sytuację ...   25.10.2011, 20:51:26
- - abort   Czekaj, czy ja dobrze rozumiem, że chcesz zamienić...   25.10.2011, 23:33:49
- - Orzeszekk   Tak przeczytalem w kursie regexp dowolny najdluzsz...   25.10.2011, 23:41:57
- - croc   A ja się zapytam: PO CO? BBCODE zwykle używa się p...   25.10.2011, 23:46:19
- - Orzeszekk   Po to ze mam na stronie edytor wizualny ktory pozw...   26.10.2011, 00:20:53
- - croc   Moim zdaniem bez sensu. Jak masz edytor WYSIWYG to...   26.10.2011, 00:23:35
- - Orzeszekk   chodzi o to ze np jesli klasa parsujaca zle sparsu...   26.10.2011, 00:28:04
- - croc   A nie możesz zastosować jakiegoś gotowego edytora ...   26.10.2011, 00:32:48
- - Orzeszekk   Fajna rada. Zdam sie w walidacji danych na javascr...   26.10.2011, 00:49:35
- - croc   1. Tak. Taka jest idea BBCODE. 2. Poczytaj sobie o...   26.10.2011, 00:55:10
- - Orzeszekk   Ja wiem o zabezpieczaniu przed SQL injection. Tylk...   26.10.2011, 01:04:55
- - croc   OK, jeszcze raz. Moja idea jest taka, żeby wszystk...   26.10.2011, 01:15:12
- - Orzeszekk   twoja idea do mnie nie trafia, jakos nie uwazam cw...   26.10.2011, 01:19:39
- - croc   Cytat(Orzeszekk @ 26.10.2011, 02:19:3...   26.10.2011, 01:23:08
- - by_ikar   Jednym wyrażeniem tego nie zrobisz możesz to zrob...   26.10.2011, 07:41:02
- - Orzeszekk   Zrezygnowalem z uzycia wyrazen regularnych na rzec...   27.10.2011, 10:22:41


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 12.10.2025 - 00:38