![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 41 Pomógł: 0 Dołączył: 2.12.2005 Ostrzeżenie: (0%) ![]() ![]() |
witam,
mam przykładowy string z kodem html zawierający podciąg w formie
chciałbym wywalić <img> przed <p> przygotowałem nawet wyrażnie regularne które chyba znośnie łapie mój przypadek:
jednak nie mam za bardzo pomysłu jak wyciąć w całości tag <p>, przesunąć za <img> a następnie zwrócić cały html ze zmianami |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 279 Pomógł: 56 Dołączył: 3.06.2010 Skąd: Tarnowskie Góry Ostrzeżenie: (0%) ![]() ![]() |
Skoro masz wyrażenie które zwraca cały tag img to wytnij go ze stringa źródłowego. I zostają ci 2 stringi. Zapisujesz w odpowiedniej kolejności i już.
Kod <p\b[^>]*>[\s]*(<img[^>]*>)#i trzeci parametr preg_match zwróci tablicę, gdzie kolejno będzie cały dopasowany stringi oraz cały tag img Ten post edytował vermis 22.12.2010, 15:39:50 -------------------- |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 41 Pomógł: 0 Dołączył: 2.12.2005 Ostrzeżenie: (0%) ![]() ![]() |
hm... uściślę trochę
chciałbym osiągnąć:
nie mam pomysłu jak "przerzucić" np tag h1 nie tracąc treści w nim zapisanej BTW gdyby dało się lepiej napisać to wyrażenie regularne to też chętnie posłucham BTW2 preg match zwraca znalezisko plus jeszcze dodatkową liczbę, czym ona jest? po elementach tablicy lecę za pomocą foreach Ten post edytował kebq 22.12.2010, 15:48:05 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 279 Pomógł: 56 Dołączył: 3.06.2010 Skąd: Tarnowskie Góry Ostrzeżenie: (0%) ![]() ![]() |
Napisz wyrażenie, które wyciągnie ten fragment:
Kod <h1>foo</h1> <p> <img src="bla.png">text text</p> Fragment odpowiedzialny za tag img daj w nawiasy. Trzeci parametr preg_matcha zwróci tablicę. print_r() wyświetli ci jej zawartość. Powinieneś otrzymać element 0 -> cały fragment, element 1->tag img Teraz wycinasz z elementu 0 zawartość elementu 1. Teraz tworzysz nowy ciąg czyli img i to co zostało w elemencie 0. Teraz wystarczy podmienić wszystko w tekście źródłowym. Można pokusić się o skrócenie kodu i użycie preg_replace(). -------------------- |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 41 Pomógł: 0 Dołączył: 2.12.2005 Ostrzeżenie: (0%) ![]() ![]() |
co masz dokładnie na myśli mówiąc o wzięciu tagu img w nawias?
problemem jest także to że wcześniej w kodzie znajduje się pusty nagłówek h1 więc go także "łapie" próbowałem go wykroić za pomocą: jednak z niewiadomych przyczyn nie łapie tego nagłówka próbowałem także: eksperymentuje też z preg_match_all ponieważ w kodzie jest kilka podobnych fragmentów do edycji, tyle że obrazek otoczony jest dodatkowo np. tagiem strong |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 46 Pomógł: 10 Dołączył: 30.06.2008 Ostrzeżenie: (0%) ![]() ![]() |
Osobiście nie polecam jednak tego rozwiązania. Zalecam sparsowanie tego przy pomocy XML Parser. Kod będzie nieco bardziej skomplikowany ale też znacznie bardziej uniwersalny i będziesz miał znacznie większe możliwości modyfikacji XML-a. Będziesz też pewny że dostaniesz w wyniku poprawnego XML-a. |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 7.07.2025 - 23:21 |