Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 6 Pomógł: 0 Dołączył: 31.08.2012 Ostrzeżenie: (0%)
|
Witam
Od jakiegoś czasu staram sie wykonać skrypt, który pobierał by część kodu z innej strony, przekształcał go i umieszczał na mojej stronie. Sprawa niby prosta, ale utknąłem na jednej żeczy. Ciag znaków, przed podmianą, wyglada np. tak: href="http://33.333.333.33/$%@AAAA a po podmianie: href="http://444.44.44.444/#^%#$#DFER/AAAABBBB Nie wiem jakiej funcji użyć, żeby wstawić ciąg znaków na końcu (tytaj oznaczony jako BBBB) Część oznaczona jako AAAA jast stała dla obu ciągów i składa się od jednego do czterech znaków. Wiem jak doprowadzić wszystko do momentu: href="http://444.44.44.444/#^%#$#DFER/AAAA i poprawnie wyświetlić na mojej stronie. Z góry dziękuję za każdą pomoc. |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 189 Pomógł: 13 Dołączył: 20.09.2008 Skąd: Lublin Ostrzeżenie: (0%)
|
$string .= 'BBBBBBBBBBBBBB'?
jeśli nie o to chodziło, to wytłumacz jeszcze raz |
|
|
|
Post
#3
|
|
|
Grupa: Zarejestrowani Postów: 6 Pomógł: 0 Dołączył: 31.08.2012 Ostrzeżenie: (0%)
|
Opisze dokładniej:
Mam: http://12.345.678.900/?161 http://12.345.678.900/?22 http://12.345.678.900/?3 A chcę otzymać: http://192.168.44.569/user/nolan/161&run http://192.168.44.569/user/nolan/22&run http://192.168.44.569/user/nolan/3&run Udało mi się uzyskac: http://192.168.44.569/user/nolan/161 http://192.168.44.569/user/nolan/22 http://192.168.44.569/user/nolan/3 Nie potrafię dodać końcówki, w tym przykładzie &run Kombinuję z str_replace: $content = str_replace('http://192.168.44.569/user/nolan/+([0-9]{1,3})', 'http://192.168.44.569/user/nolan/+([0-9]{1,3})&run', $content); Ale coś robię nie tak... Pozdrawaim Ten post edytował Tomash29 31.08.2012, 17:31:18 |
|
|
|
Post
#4
|
|
|
Grupa: Zarejestrowani Postów: 1 933 Pomógł: 460 Dołączył: 2.04.2010 Skąd: Lublin Ostrzeżenie: (0%)
|
|
|
|
|
Post
#5
|
|
|
Grupa: Zarejestrowani Postów: 6 Pomógł: 0 Dołączył: 31.08.2012 Ostrzeżenie: (0%)
|
Tylko że tych ciągów mam ponad 1000...
http://192.168.44.569/user/nolan/1 http://192.168.44.569/user/nolan/... http://192.168.44.569/user/nolan/1150 I dla każdego trzeba napisać działanie oddzielnie?? |
|
|
|
Post
#6
|
|
|
Grupa: Zarejestrowani Postów: 1 933 Pomógł: 460 Dołączył: 2.04.2010 Skąd: Lublin Ostrzeżenie: (0%)
|
Nie mam pojęcia, bo nie wiem jak to robisz, ale myślę, że nie trzeba dla każdego oddzielnie, pokaż kod.
|
|
|
|
Post
#7
|
|
|
Grupa: Zarejestrowani Postów: 590 Pomógł: 107 Dołączył: 25.10.2011 Ostrzeżenie: (0%)
|
Czy zawsze jest tak, że:
- w źródle jest http://12.345.678.900/?161 (zawsze ten sam IP i jedna liczba po pytajniku) - chcesz uzyskać inny http://192.168.44.569/user/nolan/161&run - czyli: inny adres IP i tę samą liczbę co była w źródle (poprzedzoną pewnym tekstem i doklejonym innym tekstem) Jeśli tak (bo tak zrozumiałem Twój problem), to powinno zadziałać:
To co chciałeś, rozbiłem na dwa preg_replace, nie chce mi się myśleć nad zrobieniem tego w jednej instrukcji, choć oczywiście nie jest to trudne. Swoją drogą, byłeś na dobrej drodze (IMG:style_emoticons/default/smile.gif) |
|
|
|
Post
#8
|
|
|
Grupa: Zarejestrowani Postów: 6 Pomógł: 0 Dołączył: 31.08.2012 Ostrzeżenie: (0%)
|
Dzięki, o to chodziło :-)
Teraz kombinuję jak wyciągnąć dane ze strony. Ponieważ te linki: http://12.345.678.900/?161 http://12.345.678.900/?... http://12.345.678.900/?3 znajdują się w kodzie strony *.php wraz z innymi danymi. Wymyśliłem coś takiego: <?php // Pobieranie zawartości <a> $content = file_get_contents('http://xx.xxx.xxx.xxx/strona.php'); preg_match_all('/<a.*href=\"http:\/\/12.345.678.900\/?(\d{1,3})<\/a>/', $content, $links); $from = array ($links); foreach ($links as $url) { //$new = preg_replace ('#12.345.678.900#', '192.168.44.569', $url); //$cel = preg_replace ('#(.*)/\?(\d{1,3})#', '\\1/user/nolan\\2&run', $new); echo $cel . '<br>'; } ?> Ale albo coś źle wpisuję, albo idę w złym kierunku... Jedyne co wyświetla mi się na stronie to "Array" Może jest na to lepszy sposób?? Ten post edytował Tomash29 1.09.2012, 18:20:04 |
|
|
|
Post
#9
|
|
|
Grupa: Zarejestrowani Postów: 590 Pomógł: 107 Dołączył: 25.10.2011 Ostrzeżenie: (0%)
|
Ale po co dajesz kod $from = array ($links); ?
$links o już jest tablica, instrukcja preg_match_all o to zadbała (IMG:style_emoticons/default/smile.gif) Poza tym, zrób sobie print_r ($tablica) i zobacz, co w niej jest. |
|
|
|
Post
#10
|
|
|
Grupa: Zarejestrowani Postów: 6 Pomógł: 0 Dołączył: 31.08.2012 Ostrzeżenie: (0%)
|
OK
to mam: preg_match_all('#<a(.*)</a>#s', $content, $links); i po wbiciu: print_r($links); wyświetla: <a href='http://12.345.678.900/?292'>(xxx) xxx xxx xxxx xxr</a> <a href='http://12.345.678.900/?298'>(xxx) xxx xxx xxxx xxr</a><br> <a href='http://12.345.678.900/?456'>(xxx) xxx xxx xxxx xxr</a><br> <a href='http://12.345.678.900/?225'>(xxx) xxx xxx xxxx xxr</a><br> <a href='http://12.345.678.900/?456'>(xxx) xxx xxx xxxx xxr</a><br> <a href='http://12.345.678.900/?548'>(xxx) xxx xxx xxxx xxr</a><br> Więc prawidłowo. Niestety po zastosowaniu: $new = preg_replace ('#12.345.678.900#', '192.168.44.569', $links); $cel = preg_replace ('#(.*)/\?(\d+)$#', '\\1/user/nolan/\\2&run', $new); Wyświetla: Array ( [0] => Array [1] => Array ) lub: Array jak próbuje odczytać dane z tabeli 1 lub 0... |
|
|
|
Post
#11
|
|
|
Grupa: Zarejestrowani Postów: 590 Pomógł: 107 Dołączył: 25.10.2011 Ostrzeżenie: (0%)
|
Awidzisz... Ty to masz w jednej linii, moje wyrażenie ma w sobie "$" - ma sprawdzać do końca linii. Jak miałem wyniki w tablicy, wszystko było OK. Po prostu nie wiedziałem, w jakiej postaci mam się spodziewać danych, a to zależy od zawartości pliku - więc się skupiłem na wyrażeniu regularnym.
Ty musisz zrobić jeszcze dwie rzeczy: 1. przed pętlą foreach dodać: Zakładam, że $links to jest ta zmienna, którą wypluwasz na ekran przez print_r - rozbite odnośniki masz w tablicy $matches, ale jak sobie ją rozbijesz, to z ciekawości sobie ją wyświetl, bo to jest tablica tablic (tak, takie coś) (IMG:style_emoticons/default/smile.gif) 2. Musisz do foreach przekazać tablicę z odnośnikami, którą rozbiłeś w punkcie 1:
Jeżeli zrobisz sobie wcześniej print_r ($matches), to będziesz wiedział, dlaczego tak trzeba to zapisać. W ogóle, print_r i var_dump Teoimi przyjaciółmi... (IMG:style_emoticons/default/smile.gif) |
|
|
|
![]() ![]() |
|
Aktualny czas: 24.12.2025 - 21:57 |