![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 25 Pomógł: 1 Dołączył: 20.03.2013 Ostrzeżenie: (0%) ![]() ![]() |
Witam.
Mam problem z usunięciem tagu href z fragmentów wyglądających mniej więcej tak:
Chodzi o usunięcie tego fragmentu:
Ważne żeby usunąć href'a tylko jeśli jego wartość zaczyna się na /File: a wszystkie inne href'y zostawić. Próbowałem to zrobić używając preg_replace, ale poległem. Pozdrawiam. Ten post edytował Laran 20.04.2014, 16:52:35 |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 4 291 Pomógł: 829 Dołączył: 14.02.2009 Skąd: łódź Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Wyrażenia regularne bardzo słabo sprawdzą się przy tego typu zadaniu (zresztą jak w ~95% przypadków, gdy trzeba parsować HTML).
1. DOMDocument -> loadHTML, 2. DOMXPath przy pomocy którego możesz wyszukać wszystkie elementy A, z atrybutem HREF rozpoczynającym się od /File:, 3. DOMElement::removeAttribute usunie atrybut, 4. DOMDocument::saveHTML zwróci tekstową reprezentację zmodyfikowanego HTML-a. PS. Kod podany przez @Turson nie uwzględni przypadków gdy atrybut HREF otoczony jest apostrofami, bądź w ogóle nie jest niczym otoczony (niestety HTML na takie coś pozwala). Nie zadziała w przypadku pojawienia się spacji przed/po znaku równości. Usunie HREF z elementów innych niż A. Usunie tekst href="/File:image.jpg" z czegoś takiego: Jak widać jest to niezbyt solidne rozwiązanie. |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 25 Pomógł: 1 Dołączył: 20.03.2013 Ostrzeżenie: (0%) ![]() ![]() |
Dzięki za pomoc. W rezultacie wygląda to tak:
Łatwiej mi było znaleźć odpowiednie tagi a po klasie "image", a potem usunąć z nich link niż szukać po href="/File:XXX", ale to tylko dlatego że mam problemy z regex. Do zamknęcia. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.08.2025 - 11:58 |