Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Wyrażenia regularne - jaka formuła?, proszę o pomoc w utworzeniu reguły znajdującej odpowiedni fragment
siutek
post 15.08.2020, 16:33:31
Post #1





Grupa: Zarejestrowani
Postów: 173
Pomógł: 1
Dołączył: 26.10.2005
Skąd: Toruń

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


Witam, jako że z wyrażeniami regularnymi nie jest mi po drodze i za chiny nie potrafię skonstruować odpowiedniej reguły, to proszę Was o pomoc.
Na jednej ze stron mam wielopoziomowe menu w poniższej formie:

  1. <ul>
  2. <li id="..." class="...">
  3. <a href="...">dział 1</a>
  4. </li>
  5. <li id="..." class="...">
  6. <a href="...">dział 2</a>
  7. </li>
  8. <li id="..." class="... menu-item-has-children ...">
  9. <a href="...">dział 3</a>
  10. <ul class="sub-menu">
  11. <li class="...">
  12. <a href="....">poddział 1</a>
  13. </li>
  14. <li class="...">
  15. <a href="....">poddział 2</a>
  16. </li>
  17. <li class="...">
  18. <a href="....">poddział 3</a>
  19. </li>
  20. </ul>
  21. </li>
  22. <li id="..." class="...">
  23. <a href="...">dział 4</a>
  24. </li>
  25. <li id="..." class="...">
  26. <a href="...">dział 5</a>
  27. </li>
  28. </ul>


Problem polega na tym, że do menu drugiego poziomu muszę dodać kontener, tak aby zamiast

  1. <ul class="sub-menu">{...}</ul>


było

  1. <div class="..."><ul class="sub-menu">{...}</ul></div>


O ile znalezienie <ul class="sub-menu"> da się zrobić bez wyrażeń regularnych i potrafiłbym to wykonać, o tyle nie wiem jak znaleźć zamknięcie tej listy? Stąd pomysł na wyrażenia regularne.

Ktoś jest w stanie mi pomóc?
Go to the top of the page
+Quote Post
viking
post 15.08.2020, 16:46:05
Post #2





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1113
Dołączył: 30.08.2006

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


A skąd pomysł żeby drzewo dom traktować regexpem zamiast np domdocument?


--------------------
Go to the top of the page
+Quote Post
siutek
post 15.08.2020, 16:54:15
Post #3





Grupa: Zarejestrowani
Postów: 173
Pomógł: 1
Dołączył: 26.10.2005
Skąd: Toruń

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


Strona jest na Wordpressie i nie do wszystkiego mam dostęp, nie mam zbyt wielkiego wpływu na konstrukcję menu. Mogę dodać klasy css, mogę dodać/usunąc kontaner dla całego menu, ale nie wiem jak dodać kontener do submenu. Stąd pomysł na regexpa, by zmodyfikować wygenerowany już kod HTML, bo do tego mam dostęp przy pomocy filtrów.
Go to the top of the page
+Quote Post
trueblue
post 16.08.2020, 06:14:49
Post #4





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

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


A czy w argumentach przekazanych do filtra nie ma informacji, który to poziom menu?


--------------------
Go to the top of the page
+Quote Post
SmokAnalog
post 16.08.2020, 08:12:26
Post #5





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

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


Powinieneś zadbać o dostęp do funkcjonalności, której potrzebujesz.

Zamiast tak "łatać" to może lepiej po prostu zapisać menu w takiej formie, jaką chcesz, w normalnym pliku HTML i dołączać go do szablonu? Regex na HTML-u prosi się o błędy, a zabawy drzewem DOM przy każdym requeście też nie polecam.
Go to the top of the page
+Quote Post
vokiel
post 16.08.2020, 09:49:38
Post #6





Grupa: Zarejestrowani
Postów: 2 592
Pomógł: 445
Dołączył: 12.03.2007

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


W WordPressie masz funkcję generującą menu, tam masz szablon tego jak to ma wyglądać. Szybciej, lepiej i bezpieczniej będzie dodać te kontenery w tym szablonie niż bawić się w naprawianie tego już po wygenerowaniu.

Drugie pytanie, czy na pewno musisz dodać ten kontener snitch.gif


--------------------
Go to the top of the page
+Quote Post
SmokAnalog
post 16.08.2020, 10:05:42
Post #7





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

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


Vokiel, chyba nie doczytałeś.
Go to the top of the page
+Quote Post
siutek
post 16.08.2020, 10:09:17
Post #8





Grupa: Zarejestrowani
Postów: 173
Pomógł: 1
Dołączył: 26.10.2005
Skąd: Toruń

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


Cytat(vokiel @ 16.08.2020, 10:49:38 ) *
Drugie pytanie, czy na pewno musisz dodać ten kontener snitch.gif


Muszę, bo całą stronę zbudowałem na materialize css, a teraz walczę z bocznym, wysuwanym menu w trybie mobile. Jeśli chcę mieć takie menu wielopoziomowe, wykorzystując przy tym mechanizm materialize, muszę dodać ten kontener. Inaczej nie zadziała, przetestowałem różne alternatywne opcje, tylko z kontenerem działa.
Go to the top of the page
+Quote Post
vokiel
post 17.08.2020, 19:35:31
Post #9





Grupa: Zarejestrowani
Postów: 2 592
Pomógł: 445
Dołączył: 12.03.2007

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


A jak masz tego WP? Masz dostęp do plików szablonu czy tylko jakaś atrapa/nakładka?


--------------------
Go to the top of the page
+Quote Post
siutek
post 17.08.2020, 20:52:16
Post #10





Grupa: Zarejestrowani
Postów: 173
Pomógł: 1
Dołączył: 26.10.2005
Skąd: Toruń

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


Cytat(vokiel @ 17.08.2020, 20:35:31 ) *
A jak masz tego WP? Masz dostęp do plików szablonu czy tylko jakaś atrapa/nakładka?

Do plików szablonu mam pełen dostęp - sam go budowałem od zera (z użyciem materialize css)
Go to the top of the page
+Quote Post
SmokAnalog
post 17.08.2020, 22:38:58
Post #11





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

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


To do czego nie masz dostępu?
Go to the top of the page
+Quote Post
siutek
post 18.08.2020, 12:45:18
Post #12





Grupa: Zarejestrowani
Postów: 173
Pomógł: 1
Dołączył: 26.10.2005
Skąd: Toruń

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


Cytat(SmokAnalog @ 17.08.2020, 23:38:58 ) *
To do czego nie masz dostępu?


Szablon szablonem, ale w miejscu gdzie powinno być menu wstawiam wywołanie jednej, dedykowanej funkcji która generuje menu w postaci <ul><li></li><li></li></ul>. Więc do tego gdzie umieścić menu, jak ma wyglądać (css) mam bezproblemowy dostęp, ale już do samej listy <ul> nie, bo to jest generowane przez WP.
Go to the top of the page
+Quote Post
SmokAnalog
post 18.08.2020, 14:37:41
Post #13





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

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


A sama zabawa z parametrami wp_nav_menu() nie wystarczy?

Ten post edytował SmokAnalog 18.08.2020, 14:38:07
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 Wersja Lo-Fi Aktualny czas: 19.03.2024 - 11:06