Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [HTML][PHP]wycinanie kawałków tekstu
segat
post
Post #1





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 26.03.2009

Ostrzeżenie: (0%)
-----


Witam.
Z góry przepraszam jeśli już było, szukałem ale nie znalazłem.
Pytanie jest takie:
Jest jakiś tam tekst html, w tym tekście html jest np. 10 linków porozrzucanych po całej stronie. Przykładowo:

<a class="kasa_powtarzalna" http://www.example1.pl>tytuł strony</a>
Cogito ergo sum Cogito ergo sum Cogito ergo sum Cogito ergo sum Cogito ergo sum Cogito ergo sum Cogito ergo sum Znaki specjalne <html></html><i>" (*)(@# LKJ LHF(*U)(* ILKFHKLDHFIU H@!)_)#* OIH LCogito ergo sum Cogito ergo sum Cogito ergo sum Cogito ergo sum<jakieś adresy>lkjsdl;fkj sdlkfj</php>
[0800102102][wielki książe]

<a class="kasa_powtarzalna" http://www.example2.pl>tytuł strony2</a>
Sumo corgito ego Sumo corgito ego Sumo corgito ego LKJ LHF(*U)(* ILKFHKLDHFIU H@!)_)#* OIH LCogito ergo sum Cogito ergo sum Cogito ergo sum Cogito ergo sum<jakieś adresy>lkjsdl;fkj sdlkfj</php>
[090338890][mała książka]


Wiem że beznadziejny przykład ale najprościej tak to wytłumaczyć (IMG:style_emoticons/default/smile.gif)
Mianowicie - jak widać, powtarza się tylko tekst <a class="klasa_powtarzalna" http://
Później już nic się nie powtarza aż do kolejnego <a class itd. Pomiędzy tymi powtarzalnymi częściami, są różne znaki html(tak jak na przykładzie).

Teraz tak - chciałbym móc sobie zapisać(np. w tablicy, BD, obojętne) adres witryny, oraz to co pisze w nawiasach kwadratowych na samym dole w danym przedziale, do powtórzenia kolejnego "<a class=..."(w pierwszym przykładzie "0800102102" i "wielki książe"").

Na początku starałem się to zrobić funkcją
preg_match_all='/(<a class="klasa_powtarzalna">)+(http:\/\/)+(([a-zA-Z0-9])*\.){2,5}\.?\/?[a-zA-Z0-9]*<\/a>+/si' -> no ale to mi wyświetla tylko adres http. Kombinowałem z pętlami, a później z kolejnym preg_match ale nic z tego

Wymyśliłem żeby powycinać kawałki tekstu, czyli np. od <a class="klasa_powtarzalna do <a class="klasa_powtarzalna" (było by tego np. 10 kawałków tekstu) i dopiero te kawałki tekstu poddać "czesaniu" przez preg'a.

Prosiłbym o jakieś porady, nakierowanie jak to zrobić, cokolwiek. Czy jest możliwość w ogóle wycinania kawałków tekstu, jeśli jakaś część jest niezmienna i powtarza się np. 10 razy ? Chodzi mi o wycięcie od początku danego kawałka tekstu który się powtórzy, do jego powtórzenia i tak w kółko, aż sobie wszystko podziele na części(zapiszę do tablicy te 10 kawałków tekstu po ileś tam znaków).

Pozdrawiam.
Darek
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
melkorm
post
Post #2





Grupa: Zarejestrowani
Postów: 1 366
Pomógł: 261
Dołączył: 23.09.2008
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


  1. $t = '<a class="kasa_powtarzalna" href="http://www.example1.pl">tytuł strony</a>
  2. Cogito ergo sum Cogito ergo sum Cogito ergo sum Cogito ergo sum Cogito ergo sum Cogito ergo sum Cogito ergo sum Znaki specjalne <html></html><i>" (*)(@# LKJ LHF(*U)(* ILKFHKLDHFIU H@!)_)#* OIH LCogito ergo sum Cogito ergo sum Cogito ergo sum Cogito ergo sum<jakieś adresy>lkjsdl;fkj sdlkfj</php>
  3. [0800102102][wielki książe]
  4.  
  5. <a class="kasa_powtarzalna" href="http://www.example2.pl">tytuł strony2</a>
  6. Sumo corgito ego Sumo corgito ego Sumo corgito ego LKJ LHF(*U)(* ILKFHKLDHFIU H@!)_)#* OIH LCogito ergo sum Cogito ergo sum Cogito ergo sum Cogito ergo sum<jakieś adresy>lkjsdl;fkj sdlkfj</php>
  7. [090338890][mała książka]';
  8.  
  9. $matches = array();
  10. preg_match_all('/<a class="kasa_powtarzalna" href="(.*)">.*\s.*\s\[([0-9]+)\]\[(.*)\]/',$t,$matches);
  11. array_shift($matches);
  12. var_dump($matches);


... a może tak (IMG:style_emoticons/default/snitch.gif)

P.S. Założyłem że w :
  1. <a class="kasa_powtarzalna" http:\/\/www.example2.pl>tytuł strony2</a>

(eh, parser sam przerabia adresy w kodzie >.>")

miało być:
  1. <a class="kasa_powtarzalna" href="http://www.example2.pl">tytuł strony2</a>


Ten post edytował melkorm 2.01.2010, 20:50:30
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 8.10.2025 - 16:18