Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Odseparowanie wyznaczonego fragmentu tekstu
Forum PHP.pl > Forum > Przedszkole
panjarek
Witam.
Czy za pomocą explode da się odseparować wyznaczony fragment tekstu?
Chodzi mi o to, że jak dodaję artykuł to ważniejsze fragmenty oznaczałbym w jakiś sposób, potem za pomocą explode wyświetlił je na początku strony jako spis treści.
Normalnie explode bierze cały tekst jaki znajduje się przed znakiem rozdzielającym.
Da się zrobić coś aby wychwytało tekst znajdujący się między znakami rozdzielającymi?
MWL
najmądrzejsze rozwiązanie (choć sam bym zastosował pewnie bazę danych, i tam przechowywał dane) to po prostu wybrać naprawdę nietypowy znak separatora. np. -+=_=+- raczej nie napiszesz tego w tekście więc może to służyć jako separator. Mimo to spis treści fajnie jest zrobić pobierając po prostu tytuły artykułów z bazy danych.
panjarek
Tytuły pobieram z bazy ale każdy artykuł dzielony będzie na kilka fragmentów z podtytułami.
Dodając artykuł jakimiś znakami oddzielającymi oddzielałbym od siebie fragmenty i zaznaczał tytuły.
Potem każdy fragment byłby wyświetlany na innej stronie a tytuły znajdywały się na stronie pierwszej jako spis treści.
Pomyślałem, że ułatwi mi to explode.
I jak zrobić aby pobierane było nie wszystko co jest przed "-+=_=+-" a tylko to co znajduje się między takimi znacznikami?
-+=_=+- jakiś tekst -+=_=+-
MWL
W takim wypadku zalecam już bardziej <h2></h2> znaczniki HTML'a. Spis treści za pomocą jQuery to pikuś a jeśli chodzi o PHP to tu kłaniają się wyrażenia regularne. Powinieneś trochę o tym poczytać. Pozdrawiam.
sadistic_son
To powinno się zrobić wyrażeniami regularnymi ale skoro uparłeś się na explode to proszę:
  1. // separatorami są <:> oraz <;>
  2. $artykul='Fragment tekstu <:> TYTUL_1 <;> text1-1-1-1 <:> TytUL_2 <;> teXT2-2-2 <:> TyTuL_3 <;> ciag dalszy tekstu';
  3. $artykul_expl=explode('<:>',$artykul);
  4. unset($artykul_expl[0]);
  5. $i=0;
  6. foreach ($artykul_expl as $art){
  7. $i++;
  8. $art=explode('<;>',$art);
  9. echo "Tytul $i: $art[0] <br />";
  10. }
  11. $artykul=str_replace('<:>','',$artykul);
  12. $artykul=str_replace('<;>','',$artykul);
  13. echo "<br />ARTYKUL: $artykul";
Metoda wyjątkowo "chałupnicza" więc w sumie sam jej nie polecam... ale działa.
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.