Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Wordwrap i odzielanie tekstu kolejnymi linkami
Forum PHP.pl > Forum > Przedszkole
Carnagge
Chcialem napisac sobie prosty skrypt, ktory ma w podanym tekscie, co okreslona ilosc znakow wstawic do niego link. Nie umiem jednak zrobic tak, zeby linki byly pobierane z pliku txt i za kazdym razem byl wstawiany kolejny link, a nie ten sam.

Oto jak wyglada moj kod:

  1. <?php
  2. $text = "Bardzo dlugi i cieawy tekst, ktory zostanie podzielony i beda w nim wstawiane kolejno linki z pliku.";
  3.  
  4. $adresy = file('linki.txt');
  5. foreach ($adresy as $k)
  6. {
  7. $newtext = wordwrap($text, 35, $k);
  8.  
  9. echo $newtext;
  10. }
  11. ?>


Plik linki.txt wyglada tak, ze w kazdej linii jest inny link.

Powyzszy skrypt zamiast, co 35 znkaow wstawic kolejny link to wstawia ten sam i caly tekst przerobi dla kazdego linku.

Chcialbym natomiast zeby rezultat byl taki:
  1. Bardzo dlugi i cieawy tekst, ktory LINK1 zostanie podzielony i beda w nim LINK2 wstawiane kolejno linki z pliku.Bardzo dlugi i cieawy tekst, ktory LINK3 zostanie podzielony i beda w nim LINK4 wstawiane kolejno linki z pliku.


PHP znam bardzo slabo, czy w ogole ten rezulatat to mozna uzyskac korzystajac z tego 'foreach', czy to w ogole jakos inaczej trzeba rozwiazac? Dzieki za wszelka pomoc smile.gif
mortus
Tego za pomocą wordwrap() nie zrobisz. Trzeba się pobawić pętlami:
  1. $tekst = 'Bardzo dlugi i cieawy tekst, ktory zostanie podzielony i beda w nim wstawiane kolejno linki z pliku.';
  2. $tekst = explode(' ', $tekst);
  3. $adresy = file('linki.txt');
  4. $obecnyAdres = 0;
  5. $adresIstnieje = true;
  6. foreach($tekst as $numer => $slowo) {
  7. if(!isset($adresy[$obecnyAdres])) {
  8. $adresIstnieje = false;
  9. }
  10. if($numer > 0 && $numer % 6 == 0 && $adresIstnieje) { // wstaw adres co szóste słowo
  11. $nowyTekst[] = $adresy[$obecnyAdres];
  12. $obecnyAdres++;
  13. }
  14. $nowyTekst[] = $slowo;
  15. }
  16. $nowyTekst = implode(' ', $nowyTekst);
  17. echo $nowyTekst;

Można by się było również zastanowić nad użyciem wyrażeń regularnych.

EDIT
Skrypt pisany z głowy, więc mogą być błędy, ale metodę rozwiązania problemu chyba uchwyciłem.
Carnagge
Wielkie dzieki smile.gif
Dziala jak chcialem. Mam jeszcze jedno male pytanko, jak zrobic, zeby tekst pobierac z pliku, bo jak zamieniam

  1. $tekst = 'Bardzo dlugi i cieawy tekst, ktory zostanie podzielony i beda w nim wstawiane kolejno linki z pliku.';


na

  1. $tekst = file('teksty.txt');


to nie dziala.
mortus
Jeśli to nie są jakieś duże pliki (czyli takie powyżej dajmy na to 50MB) to możesz użyć funkcji file_get_contents(). Dla większych plików skrypt trzeba będzie przerobić, aby czytał plik linia po linii.

Z file() skrypt nie działa, ponieważ ta funkcja zapisuje każdą linię pliku jako odrębny element tablicy.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.