![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 10 Pomógł: 0 Dołączył: 4.07.2011 Ostrzeżenie: (0%) ![]() ![]() |
Zatrzymałem się na problemie:
mam na stronie istniejący kod html w szablonie: <p> <fragment kodu 1a> nazwadomeny1.pl <fragment kodu 1b> <fragment kodu 2a> nazwadomeny2.pl <fragment kodu 2b> <fragment kodu 3a> nazwadomeny3.pl <fragment kodu 3b> . . . <fragment kodu 20a> nazwadomeny20.pl <fragment kodu 20b> </p> Czy jest prosty sposób na zczytanie pomiędzy znacznikami <p> a </p> nazwadomeny1.pl do nazwadomeny20.pl by były dostępne w zmiennych od 1 do 20 i mogły wpływać na zmiany kodu <fragment kodu 1a> ...<fragment kodu 20a> nazwadomeny1.pl ... nazwadomeny20.pl jest formacie bez http://www. (tylko nazwadomeny.pl) |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 348 Pomógł: 26 Dołączył: 8.10.2008 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
Oczywiście, że jest prosty sposób.
Wczytujesz zdalny plik np za pomocą Masz w ten sposób stronę w zmiennej $strona. Teraz możesz użyć wyrażeń regularnych lub JS. Wyrażenie: JS: var strona = "<?=$strona?>"; var elementy.html($(strona).find(/* co tam chcesz znaleźć lub nawet wyrażenie regularne */)); |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 10 Pomógł: 0 Dołączył: 4.07.2011 Ostrzeżenie: (0%) ![]() ![]() |
Wczytujesz zdalny plik np za pomocą Masz w ten sposób stronę w zmiennej $strona. Teraz możesz użyć wyrażeń regularnych lub JS. Podałeś chyba bardziej uniwersalny sposób niż chciałem (IMG:style_emoticons/default/smile.gif) Bo umożliwia wczytanie całej i dowolnej strony z sieci. Chodzi mi nawet o prostszy wariant - wczytanie z własnej, edytowanej strony - podstron z takim szablonem ma być dużo, więc chciałbym się ograniczyć do wczytania tylko fragmentu pomiędzy znacznikami <p> </p> Cel jest taki, by tekst zamienić na inny adres ze składnikami wczytanego tekstu "jakasdomena.pl" |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 1 798 Pomógł: 307 Dołączył: 13.05.2009 Skąd: Gubin/Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Jeżeli kiedykolwiek bawiłeś się jQuery i spodobało ci się, to phpQuery również przypadnie ci do gustu. manipulacia DOM jest na prawdę prosta i to co chcesz osiągnąć, można zrobić w kilku linijkach kodu.
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 10 Pomógł: 0 Dołączył: 4.07.2011 Ostrzeżenie: (0%) ![]() ![]() |
Jeżeli kiedykolwiek bawiłeś się jQuery i spodobało ci się, to phpQuery również przypadnie ci do gustu. manipulacia DOM jest na prawdę prosta i to co chcesz osiągnąć, można zrobić w kilku linijkach kodu. Dopiero zaczynam zabawę z php - z konieczności, dotychczas tylko html, myślę że nawet jestem w "młodszakach" w tym przedszkolu (IMG:style_emoticons/default/smile.gif) Także proszę o wyrozumiałość i niestety podpowiedzi z gotowcami lub jak dla laika. Także dla mnie to sugestia na przyszłość, dzięki za podpowiedź. Ten post edytował preg 4.07.2011, 10:10:21 |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 348 Pomógł: 26 Dołączył: 8.10.2008 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
Dopiero zaczynam zabawę z php - z konieczności, dotychczas tylko html, myślę że nawet jesetm w "młodszakach" w tym przedszkolu (IMG:style_emoticons/default/smile.gif) Także proszę o wyrozumiałość i niestety podpowiedzi z gotowcami lub jak dla laika. Zacznij zabawę z manualem. Zanim zaczniesz płynnie pisać takie rzeczy musisz też na poważnie zabawić się z wyrażeniami regularnymi: http://gajdaw.pl/php/wyrazenia-regularne-pcre-php-tutorial/ Przeleć 7 razy cały tutorial a zapewniem będziesz wiedział więcej. (co do samych wyrażeń regularnych) Gotowce tylko Ci zaszkodzą. Kiedy ja zaczynałem zabawę z PHP stosowałem się właśnie do tych zasad. |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 10 Pomógł: 0 Dołączył: 4.07.2011 Ostrzeżenie: (0%) ![]() ![]() |
Zacznij zabawę z manualem. Zanim zaczniesz płynnie pisać takie rzeczy musisz też na poważnie zabawić się z wyrażeniami regularnymi: http://gajdaw.pl/php/wyrazenia-regularne-pcre-php-tutorial/ Przeglądałem, nawet zamówiłem dziś książkę Gajdy (IMG:style_emoticons/default/smile.gif) Kombinowałem przez weekend z tego co z samouczków na necie, ale za dużo tego na raz jak dla mnie. Spróbuję z Twoją wersją wczytania pliku, dzięki Ten post edytował preg 4.07.2011, 10:15:13 |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 1 798 Pomógł: 307 Dołączył: 13.05.2009 Skąd: Gubin/Wrocław Ostrzeżenie: (0%) ![]() ![]() |
No jak początkujący jesteś, ale kupiłeś już książkę, to mogę dać ci jakiegoś gotowca, tylko pokaż mi większą część kodu który chcesz pobrać (html), żebym wiedział co dokładnie chcesz pobrać, bo niestety nie ma jakiejś metody że mówisz stronie "pobierz mi to o czym teraz myślę" i ona za ciebie pobiera to o czym myślisz (IMG:style_emoticons/default/biggrin.gif) trzeba podać dokładnie co ma pobrać, jak będę wiedział co ma pobrać, to ci napiszę gotowca.
Ten post edytował by_ikar 4.07.2011, 10:34:58 |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 10 Pomógł: 0 Dołączył: 4.07.2011 Ostrzeżenie: (0%) ![]() ![]() |
No jak początkujący jesteś, ale kupiłeś już książkę, to mogę dać ci jakiegoś gotowca, tylko pokaż mi większą część kodu który chcesz pobrać (html), żebym wiedział co dokładnie chcesz pobrać, bo niestety nie ma jakiejś metody że mówisz stronie "pobierz mi to o czym teraz myślę" i ona za ciebie pobiera to o czym myślisz (IMG:style_emoticons/default/biggrin.gif) trzeba podać dokładnie co ma pobrać, jak będę wiedział co ma pobrać, to ci napiszę gotowca. Dziękuję za deklarację, nawet nie chcę Cię męczyć o gotowy kod - wystarczą składniki z którymi sobie już dalej poradzę. Na stronie mam taki fragment - istniejący kod html (podaję szablon): Kod <br> adres1.pl<br> adres2.pl<br> adres3.pl<br> adres4.pl<br> . . . adres20.pl<br> Chcę by skrypt php w tym samym miejscu co mam ten fragment, zmodyfikował mi każdą z 20 linijek htmla na postać: Kod <a href="http://www.stałyadres.pl/podkatalog/adres1.pl" target="_blank" class="nazwaclasy">adres1.pl</a><br> <a href="http://www.stałyadres.pl/podkatalog/adres2.pl" target="_blank" class="nazwaclasy">adres2.pl</a><br> <a href="http://www.stałyadres.pl/podkatalog/adres3.pl" target="_blank" class="nazwaclasy">adres3.pl</a><br> <a href="http://www.stałyadres.pl/podkatalog/adres4.pl" target="_blank" class="nazwaclasy">adres4.pl</a><br> . . . <a href="http://www.stałyadres.pl/podkatalog/adres20.pl" target="_blank" class="nazwaclasy">adres20.pl</a><br> Zakładam więc, że potrzebuję mieć coś takiego (dla wersji docelowej): 1/ kod, który mi wyłapuje adres1.pl do adres20.pl z górnego fragmentu, przypisuje to do kolejnych 20 zmiennych (tego nie wiem jak zrobić) 2/ przed fragmentami kodu adres1.pl do adres20.pl umieszczem np. "print $zmienna1" w której mam zdefiniowany fragment kodu html: Kod "<a href="http://www.stałyadres.pl/podkatalog/" (tutaj wstawiam zmienną od adres1.pl) dodaję zdefiniowany kolejny kawałek html: Kod " target="_blank" class="nazwaclasy"> (tu wstawiam znowu zmienną od adres1.pl) 3/ wstawiam funkcję print $zmienna2 w której mam zdefiniowane: "</a>" I to już koniec (dalej to samo dla kolejnych adres2.pl ... adres20.pl Czyli uzyskuję z tego: Kod adres1.pl<br> to: Kod <a href="http://www.stałyadres.pl/podkatalog/adres1.pl" target="_blank" class="nazwaclasy">adres1.pl</a><br> Zacząłem tak: Kod <? $url_ref = 'http://www.stalyadres.pl/podkatalog/'; $html1 = '<a href="'; $html2 = 'adres1.pl" target = "blank">adres1</a><br>'; (zamiast adres1.pl powinna być zmienna zawierająca adres1.pl) print ($html1 . $url_ref . $html2); ?> Ale ten kod nie wczytuje tego co już jest (adres1.pl do adres20.pl) i nie dodaje modyfikuje kodu html już istniejącego. |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 1 798 Pomógł: 307 Dołączył: 13.05.2009 Skąd: Gubin/Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Musisz mi jeszcze kilka rzeczy wytłumaczyć bo mam wątpliwości do tego co mi przychodzi do głowy. Otóż, czy ty te adresy które chcesz opakować w <a> pobierasz skądś, czy ty tą listę znasz? Bo ja to rozumiem tak, że masz stronę jest to strona "preg.com", jest również inna strona i nazywa się ona "some.com". Na swojej stronie masz paragraf <p> i w nim chcesz umieścić linki które pobierasz z strony some.com na której te linki są umieszczone w takiej postaci:
Kod <br> adres1.pl<br> adres2.pl<br> adres3.pl<br> adres4.pl<br> . . . adres20.pl<br> Zgadza się? Bo nie wiem czy dobrze rozumuje (IMG:style_emoticons/default/smile.gif) |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 10 Pomógł: 0 Dołączył: 4.07.2011 Ostrzeżenie: (0%) ![]() ![]() |
Musisz mi jeszcze kilka rzeczy wytłumaczyć bo mam wątpliwości do tego co mi przychodzi do głowy. Otóż, czy ty te adresy które chcesz opakować w <a> pobierasz skądś, czy ty tą listę znasz? Bo ja to rozumiem tak, że masz stronę jest to strona "preg.com", jest również inna strona i nazywa się ona "some.com". Na swojej stronie masz paragraf <p> i w nim chcesz umieścić linki które pobierasz z strony some.com na której te linki są umieszczone w takiej postaci: Kod <br> adres1.pl<br> adres2.pl<br> adres3.pl<br> adres4.pl<br> . . . adres20.pl<br> Zgadza się? Bo nie wiem czy dobrze rozumuje (IMG:style_emoticons/default/smile.gif) Jest jeszcze prościej - mam starą i prymitywną wersję strony w html-u z dużą ilością podstron, na każdej z tych podstron jest właśnie takie coś: Kod <br> adres1.pl<br> adres2.pl<br> adres3.pl<br> adres4.pl<br> . . . adres20.pl<br> Chcę najprostszym sposobem zrobić z tego działające linki wg szablonu jaki wcześniej opisałem (część stała jakiegoś adresu + wklejone w 2 miejscach linijki tekstu z adresami). Ponieważ za dużo czasu (i jeszcze nie na moim etapie) była by gruntowna przebudowa z bazą Mysql (pewnie było by najlepiej i najprościej) chciałem szybkim sposobem połatać stronę, robiąc działające linki w miejsce samego tekstu z adresami. Cały proces wyglądał by wg mnie tak.: - wczytuję starą stronę do edytora, - w miejscu z tekstem adresów dodaję (na czerwono nowe rzeczy): <br> <kawałek kodu php 1a>adres1.pl<kawałek kodu php 1b><br> <kawałek kodu php 2a>adres2.pl<kawałek kodu php 2b><br> <kawałek kodu php 3a>adres3.pl<kawałek kodu php 3b><br> <kawałek kodu php 4a>adres4.pl<kawałek kodu php 4b><br> . . . <kawałek kodu php 20a>adres20.pl<kawałek kodu php 20b><br> lub jak się da prościej: wycinam tekst z adresami i wstawiam do skryptu php, a wyświetlanie wyniku wstawiam w miejsce wyciętego tekstu z adresami (wariant dużo lepszy bo nie muszę setki razy wstawiać przed adres i za adres nowego kodu php. Podstron jest kilkadziesiąt, na każdej z nich są po 2 takie bloki po 20 adresów (sam tekst bez kodu robiącego linki). Ten post edytował preg 4.07.2011, 18:35:47 |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 1 798 Pomógł: 307 Dołączył: 13.05.2009 Skąd: Gubin/Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Wczoraj już nie wiedziałem jak do końca będą wyglądać te linki, dlatego użyłem wyrażenia regularnego, które znajdzie ci wszystkie linki w zmiennej której mu podasz.
Kod <?php $str = '<br> adres1.pl<br> adres2.pl<br> adres3.pl<br> adres4.pl<br> adres5.pl<br> adres6.pl<br> adres7.pl<br> adres8.pl<br> adres9.pl<br> adres10.pl<br> adres11.pl<br> adres12.pl<br> adres13.pl<br> adres14.pl<br> adres15.pl<br> adres16.pl<br> adres17.pl<br> adres18.pl<br> adres19.pl<br> adres20.pl<br>'; preg_match_all('#(((f|ht){1}tp(s)?://)?[\w-]{1,}\.[a-z]{2,}([\w@:%+.~?&=\/]+)?)#x', $str, $matches); foreach($matches[0] as $adres) { echo '<a href="http://www.stałyadres.pl/podkatalog/'.$adres.'" target="_blank" class="nazwaclasy">'.$adres.'</a><br>'.PHP_EOL; } Zamiast zmiennej $str którą podałem w powyższy sposób możesz przypisać do niej zawartość pliku: Kod $str = ''; if(file_exists('')) { $str = file_get_contents('/path/to/file/filename.html'); } preg_match_all('#(((f|ht){1}tp(s)?://)?[\w-]{1,}\.[a-z]{2,}([\w@:%+.~?&=\/]+)?)#x', $str, $matches); foreach($matches[0] as $adres) { echo '<a href="http://www.stałyadres.pl/podkatalog/'.$adres.'" target="_blank" class="nazwaclasy">'.$adres.'</a><br>'.PHP_EOL; } Bo niestety nadal nie do końca rozumiem o co dokładnie ci chodzi.. Nie wiem czy te adresy masz gdzieś w pliku, czy masz gdzieś je w zmiennej, czy jak to wygląda, ciężko mi powiedzieć. Najlepiej jak się daje kod php wtedy jest łatwiej zrozumieć o co chodzi z danym problemem. Gdyby nie chodziło o to, to musisz mi wyjaśnić chyba jeszcze prościej o co ci chodzi, albo podać chociaż część pliku php, bo niestety z fusów ciężko się wróży (IMG:style_emoticons/default/wink.gif) PS. z wyrażeniami zacząłem dopiero ostatnio zabawę, więc może ono nie być najlepsze, nie mniej, sprawdzałem na kilku wariantach i powinno działać. Pozdro. Ten post edytował by_ikar 5.07.2011, 22:52:46 |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 10 Pomógł: 0 Dołączył: 4.07.2011 Ostrzeżenie: (0%) ![]() ![]() |
Nie wiem czy te adresy masz gdzieś w pliku, czy masz gdzieś je w zmiennej Adresy mam w pliku HTML-a, w tym samym pliku będę robił modyfikację, którą mi podałeś. Sprawdziłem na rzeczywistych adresach, wszystko ok, ale nie chodzą adresy z myślnikiem w środku (obcina element przed myślnikiem) - pewnie to kwestia definicji myślnika ? Przetestuje dziś na dalszych stronach. Pozdro i dzięki serdeczne, dam znać jak testy. |
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 1 798 Pomógł: 307 Dołączył: 13.05.2009 Skąd: Gubin/Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Tak, dokładnie, kwestia dodania myślnika, o którym zapomniałem (IMG:style_emoticons/default/wink.gif) zaktualizowałem posta wyżej, gdybyś nie odnalazł różnicy to podmień samo wyrażenie.
z: Kod #(((f|ht){1}tp(s)?://)?[\w]{1,}\.[a-z]{2,}([\w@:%+.~?&=\/]+)?)#x na: Kod #(((f|ht){1}tp(s)?://)?[\w-]{1,}\.[a-z]{2,}([\w@:%+.~?&=\/]+)?)#x Oczywiście to wyrażenie nie jest idealne, ale z tego co i się wydaje powinno całkiem przyzwoicie łapać wszystkie adresy. Gdybyś chciał żeby łapał tylko adres w postaci example.com a nie w postaci http://www.example.com/some/param.php?get=var przykładowo, to wykasuj jedną rzecz z wyrażenia, a dokładnie to ono musiało by tak wyglądać: Kod #([\w-]{1,}\.[a-z]{2,})#x Które również powinno zadziałać na linki które podałeś wcześniej. Pozdro i nie ma sprawy (IMG:style_emoticons/default/wink.gif) Ten post edytował by_ikar 6.07.2011, 09:18:53 |
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 10 Pomógł: 0 Dołączył: 4.07.2011 Ostrzeżenie: (0%) ![]() ![]() |
Wielkie dzięki.
Pozdro (IMG:style_emoticons/default/smile.gif) (przy okazji stawiam piwo (IMG:style_emoticons/default/wink.gif) ) Testy, testy i chyba duża nie przewidziana "górka" Bo co prawda adresy z polskimi znakami IDN nie występują często, ale skrypt ich nie widzi. A tu jeszcze znaki mogą być w kodzie iso-8859-2 lub windows-1250 Reszta chodzi super, jak ktoś ma doświadczenie jak wpisać do rozpoznawania jeszcze polskie znaki diakrytyczne to HELP (IMG:style_emoticons/default/smile.gif) |
|
|
![]()
Post
#16
|
|
Grupa: Zarejestrowani Postów: 1 798 Pomógł: 307 Dołączył: 13.05.2009 Skąd: Gubin/Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Kod #([\w-ąśżźćńłóę]{1,}\.[a-z]{2,})#x A tutaj: http://regexr.com?2u61b masz podgląd działania. Nie będzie działać w przypadku kiedy w adresach będą duże litery z znakami diakrytycznymi. (IMG:style_emoticons/default/wink.gif) Ten post edytował by_ikar 7.07.2011, 21:47:29 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 24.08.2025 - 14:44 |