![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 278 Pomógł: 35 Dołączył: 25.06.2010 Ostrzeżenie: (0%) ![]() ![]() |
Mamy kod:
Na chwilę obecną nie robi on nic sensownego, gdyż zwyczajnie usuwa z tekstu znaczniki [access=...] [/access] i wyświetla ich zawartość. Potrzebuję zrobić myk aby zawartość z pomiędzy [access=...] i [/access] była wyświetlana tylko wtedy, gdy wartość przypisana znacznikowi (w powyższym kodzie A lub B ) była taka sama jak określona w zmiennej $access - w tym przypadku $access="A"; Tak aby w przytoczonym przykładzie fragment [access=B]Aenean laoreet[/access] nie został wyświetlony. Jakieś pomysły ? Ten post edytował gargamel 15.04.2011, 19:31:05 |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 2 178 Pomógł: 596 Dołączył: 25.09.2009 Skąd: Piwniczna-Zdrój Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 278 Pomógł: 35 Dołączył: 25.06.2010 Ostrzeżenie: (0%) ![]() ![]() |
Ale moment, w ten sposób z [access=A]Lorem ipsum dolor sit amet[/access] wyświetli się zawartość tak jak trzeba, ale ta druga część wyświetli "[access=B]Aenean laoreet[/access]"
bo nie dopasuje do wzorca.... |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 2 178 Pomógł: 596 Dołączył: 25.09.2009 Skąd: Piwniczna-Zdrój Ostrzeżenie: (0%) ![]() ![]() |
Nie wiem, czy można to zrobić za pomocą jednego wyrażenia regularnego. Na pewno można zrobić przy pomocy dwóch:
Można jeszcze zastosować tablicę wzorców i zamienników:
Ten post edytował mortus 15.04.2011, 20:52:05 |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 278 Pomógł: 35 Dołączył: 25.06.2010 Ostrzeżenie: (0%) ![]() ![]() |
Dokładnie o to mi chodziło, dzięki!
Nie mogę sobie poradzić jeszcze z jedną rzeczą. Mianowicie skrypt działa dobrze jeśli $access przyjmuje wartości pojedynczego znaku (A, B, C... cokolwiek). Jak natomiast zrobić negację 2-giego wyrazu tablicy:
Jeśli $access ma wartość np.: 'A' to negację mamy: ... [^A] ... no i wszystko gra. Jeśli za $access podstawimy np.: 'Abc' to mamy: [^Abc], a więc już nie do końca to o co chodzi... Próbowałem [^(".$access.")], ale nie działa... :/ |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 262 Pomógł: 39 Dołączył: 12.04.2004 Ostrzeżenie: (0%) ![]() ![]() |
@gargamel: poczytaj Temat: Rozne od negowanie wyrazenia regularnego
-------------------- rm -rf /*
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 2 178 Pomógł: 596 Dołączył: 25.09.2009 Skąd: Piwniczna-Zdrój Ostrzeżenie: (0%) ![]() ![]() |
No tak. Podane wyżej rozwiązanie zadziała tylko wtedy, gdy dostęp będzie zdefiniowany za pomocą jednego znaku. Jeśli natomiast chcemy użyć słowa, musimy zastosować wspomniany w przytoczonym temacie assertion test. Kod:
Z drugiego wzorca usunąłem subpattern wyszukujący zawartość pomiędzy [access=...] i [/access], gdyż zawartość ta i tak nie będzie użyta. |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 278 Pomógł: 35 Dołączył: 25.06.2010 Ostrzeżenie: (0%) ![]() ![]() |
mortus dokładnie o to mi chodziło. Podziękował bardzo!
Bags_Bunny dzięki za linka, ogólnie ciężko jest w necie znaleźć jakiś sensowny tutorial, czy kurs z wyrażeń regularnych. Bo większość zamyka się w kilku zdaniach podstaw... Pozdro! |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 262 Pomógł: 39 Dołączył: 12.04.2004 Ostrzeżenie: (0%) ![]() ![]() |
W manualu PHP jest to opisane tak jasno i dokładnie, że nic innego nie potrzeba. Kursy to na ogół ściema.
-------------------- rm -rf /*
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 01:56 |