![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 60 Pomógł: 1 Dołączył: 25.11.2008 Skąd: Polska Ostrzeżenie: (10%) ![]() ![]() |
Witam. Zrobiłem sobie funkcję, która koloruje składnię. Wszystko w sumie ładnie chodzi, ale bez problemów obyć się nie mogło... Funkcja zmienia znaki * , . () na fioletowe a kody znajdujące się pomiędzy ' a ' na zielone. Problem polega na tym, że jeżeli między ' a ' znajdzie się znak * , . () to jest on oczywiście zamieniony na fioletowy... Czy wiecie jak takiej sytuacji zaradzić? Aby funkcja zamieniając znaki * , . () omijała fragmenty tekstu zawarte miedzy ' a '?
Oto moja funkcja:
Proszę o pomoc i pozdrawiam, ladovnik Ten post edytował ladovnik 25.11.2008, 18:22:21 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 19 Pomógł: 3 Dołączył: 9.05.2007 Skąd: Krzyż Wielkopolski Ostrzeżenie: (0%) ![]() ![]() |
można by było się pobawić wyrażeniami regularnymi... np.:
- gdy między dwoma apostrofami znajdzie się obojętnie jaki znak - koloruj wszystko na zielono - gdy w kodzie znajdzie się sama gwiazdka (*) pokoloruj ją na fioletowo lecz nie koloruj tych gwiazdek które mają obok siebie jakiekolwiek znaki alfanumeryczne... wyrażenia są tym czym szukasz... definiowanie tylko co gdzie i jak będzie chyba trochę kosztowało sporo czasu... poczytaj gdzieś bo wyrażenia regularne to obszerny temat jak na odpowiedź na forum a ja chciałem Cię tylko naprowadzić pozdr |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 60 Pomógł: 1 Dołączył: 25.11.2008 Skąd: Polska Ostrzeżenie: (10%) ![]() ![]() |
Wielkie dzięki! Poczytałem sobie o wyrażeniach regularnych i udało mi się rozwiązać problem
![]() Mam tylko jeszcze pytanie... w wyrażeniach regularnych, jeśli chce użyć [^] czyli negacji, to jak zrobić aby dać do negacji cały jeden ciąg znaków? Tzn. chodzi mi o to, że np. [^<span style=\"color:green\">"]\W potraktuje z osobna każdy znak, a mnie chodzi o to, aby do negacji trafiło to jako cały jeden ciąg znaków. Ktoś wie jak to zrobić? Jeśli ktoś nie rozumie, o co mi chodzi, proszę napisać a postaram się to wytłumaczyć w inny sposób. Pozdrawiam, ladovnik Ten post edytował ladovnik 28.11.2008, 18:03:12 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 19 Pomógł: 3 Dołączył: 9.05.2007 Skąd: Krzyż Wielkopolski Ostrzeżenie: (0%) ![]() ![]() |
jak zapewne czytałeś, jest takie coś w tych wyrażeniach jak kwadratowy nawias w którym może być ten ciąg znaków...
Ten post edytował skim 29.11.2008, 11:03:05 |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 60 Pomógł: 1 Dołączył: 25.11.2008 Skąd: Polska Ostrzeżenie: (10%) ![]() ![]() |
Tak, i użyłem tych nawiasów: [] lecz nie przyniosło to spodziewanego efektu. Wiem nawet dlaczego. Proszę zobaczyć:
Znak = zostanie podmieniony na kolorowy tylko wtedy, jeśli nie zawiera po swojej lewej stronie ciągu znaków: <span style="color:gray;">" lub <span style="color:gray;">' lub < oraz gdy nie będzie zawierał po swojej prawej stronie ciągu znaków '</span> lub "</span> lub >. I działa to dla znaków = umieszczonych miedzy " a " lub 'a', które zamienia na szare i nie koloruje w nich znaku "=". Jest jednak problem. Otóż, po przemianie mojej zmiennej $string wygląda ona tak: Pierwszy znak = umieszczony bez " " lub ' ' też na dobrą sprawę ma po swojej prawej stronie ciąg znaków "<span> '</span> > i dlatego nie jest zamieniony na kolorowy. Podobna sytuacja ze znakiem = umieszczonym kawałek dalej, również nie pomiędzy "a" lub 'a'. Ma na dobrą stronę po prawej stronie ciągi znaków zabronione i po lewej też, dlatego nie jest zamieniany. Nie potrafię sobie z tym poradzić, czy ktoś ma jakiś pomysł? Pozdrawiam, ladovnik Ten post edytował ladovnik 29.11.2008, 14:21:28 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 04:50 |