Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP, wyr. reg.] "Podświetlenie" wersów z tekstu, Jak zrobić? (pewnie korzystając z wyraż. reg.)
Blackhole
post
Post #1





Grupa: Zarejestrowani
Postów: 283
Pomógł: 1
Dołączył: 15.11.2004
Skąd: Mikołów

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


Cześć.
Mam sobie w zmiennej tekst zawierający w sobie liczby, określające nr wersu. Np.:
  1. 1 To jest pierwszy wers, 2 a to już drugi. Zaraz będzie trzeci. 3 O już się pojawił. Mogę tak więcej, ale może na czwartym wystarczy. 4 A więc ten będzie ostatni.
Chciałbym teraz zrobić tak, że mając podany przedział liczb w 2 zmiennych np. $start=2 i $end=3, wersy od 2 do 3 powinny być jakoś podświetlone.
Próbowałem tak:
  1. <?php
  2. $tekst = preg_replace("#(".$start.") #",\n<span class=\"t_mark\">1 ", $tekst);
  3. $tekst = preg_replace("#(".($end+1).") #",\n</span>1 ", $tekst);
  4. ?>
lecz nie działa poprawnie. Gdy podam $start=1, a tekst zawiera wers np. o numerze 11, to ten 11 też się podświetla blinksmiley.gif Proszę o pomoc.

--- edit ---

Wersja:
  1. <?php
  2. $tekst = preg_replace("#[^0-9](".$start.") #",\n<span class=\"t_mark\">1 ", $tekst);
  3. $tekst = preg_replace("# (".($end+1).")#","</span>\n 1 ", $tekst);
  4. ?>
działa już dość dobrze. Jednak w tekście mogą się pojawiać znaczniki <h3> i jeśli taki element będzie w wersach wchodzących w skład podświetlonego fragmentu, to podświetlenie kończy się przed tym znacznikiem. Jak to obejść?

Ten post edytował Blackhole 15.08.2008, 10:28:22


--------------------
Ściskam prawicę...
Jacek

http://doscniewoli.pl/ - wszyscy jesteśmy niewolnikami bankierów!
http://jezusimarlena.ovh.org/
YouTube - Egzorcyzmy Anneliese Michel
Go to the top of the page
+Quote Post
Shili
post
Post #2





Grupa: Zarejestrowani
Postów: 1 085
Pomógł: 231
Dołączył: 12.05.2008

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


Kończy się? U mnie się nie kończy, tylko podświetlenie idzie sobie do tego miejsca, w którym miało się kończyć.
Swoją drogą - proponuję robić podświetlenie divem, jeśli przypuszczasz, że będą tam inne znaczniki, divowi wystarczy dać display: inline, żeby się wizualnie zachowywał jak span, ale walidator za to nie zwróci błędu.
Go to the top of the page
+Quote Post
Blackhole
post
Post #3





Grupa: Zarejestrowani
Postów: 283
Pomógł: 1
Dołączył: 15.11.2004
Skąd: Mikołów

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


Dałem DIV i styl "display: inline;", ale nie pomogło blinksmiley.gif
U mnie też tylko podświetlenie kończy się zbyt wcześnie.

Ten post edytował Blackhole 15.08.2008, 10:42:19


--------------------
Ściskam prawicę...
Jacek

http://doscniewoli.pl/ - wszyscy jesteśmy niewolnikami bankierów!
http://jezusimarlena.ovh.org/
YouTube - Egzorcyzmy Anneliese Michel
Go to the top of the page
+Quote Post
Shili
post
Post #4





Grupa: Zarejestrowani
Postów: 1 085
Pomógł: 231
Dołączył: 12.05.2008

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


Podaj mi dokładnie Twój problematyczny tekst, jeśli możesz.
Go to the top of the page
+Quote Post
Blackhole
post
Post #5





Grupa: Zarejestrowani
Postów: 283
Pomógł: 1
Dołączył: 15.11.2004
Skąd: Mikołów

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


http://jezusimarlena.ovh.org/t/index.php?p...p;ms=3&me=6
Zmienne GET ms i me to odpowiedniki $start i $end.


--------------------
Ściskam prawicę...
Jacek

http://doscniewoli.pl/ - wszyscy jesteśmy niewolnikami bankierów!
http://jezusimarlena.ovh.org/
YouTube - Egzorcyzmy Anneliese Michel
Go to the top of the page
+Quote Post
Shili
post
Post #6





Grupa: Zarejestrowani
Postów: 1 085
Pomógł: 231
Dołączył: 12.05.2008

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


Prześledź sobie kod wygenerowanej strony - divem obejmuje tak jak powinno, problem nie leży w wyrażeniu regularnym winksmiley.jpg

Spróbuj dodać nie tylko elementowi .E_mark tło, ale również jego elementom podrzędnym.
Go to the top of the page
+Quote Post
Blackhole
post
Post #7





Grupa: Zarejestrowani
Postów: 283
Pomógł: 1
Dołączył: 15.11.2004
Skąd: Mikołów

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


Tak. Wyrażenie regularne jest dobre. Problem chyba w tym, że po </h3> mam w tekście znacznik <p> i potem znacznik zamykający podświetlenie tekstu jest wewnątrz tego paragrafu. A przecież znaczniki nie mogą się zachodzić na siebie.
Chyba będę musiał dodatkowy kod PHP napisać.


--------------------
Ściskam prawicę...
Jacek

http://doscniewoli.pl/ - wszyscy jesteśmy niewolnikami bankierów!
http://jezusimarlena.ovh.org/
YouTube - Egzorcyzmy Anneliese Michel
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 22.08.2025 - 11:26