Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Substr - nie dokładnie wyświetla.
Forum PHP.pl > Forum > Przedszkole
KrzysiekKCN
Witam,
Opieram stronę na wordpressie, i muszę utworzyć nowy szablon dla strony.
Tak żebym wprowadził treść w panelu, a skrypt na niej pracował.
Treść strony wygląda mniej więcej tak, i nie jestem w stanie powiedzieć jak dużo tekstu będzie w danym znaczniku.
Kod
[carpet]
tytul,opis,folder
[/carpet]
[tekst_top]
xyz
[/tekst_top]
[tekst_srodek]
xyz
[/tekst_srodek]
[tekst_dol]
xyz
[/tekst_dol]

Teraz skrypt treść znacznika [carpet]używa do slidera
A treść [tekstu] wyświetla w danych miejscach strony.

I teraz jest problem, w php próbuje znaleźć kod między znacznikami:
  1. $tresc = $GLOBALS['post']->post_content;
  2. $mystring = $tresc;
  3. $findme = '[carpet]';
  4. $start = strpos($mystring, $findme);
  5. //koniec wykladzin
  6. $findme2 = '[/carpet]';
  7. $end = strpos($mystring, $findme2);
  8. $start = $start+8;
  9. $end = $end - 8;
  10. $wszystkie = substr($tresc, $start, $end);

  1. $findme = '[tekst_top]';
  2. $tekst_top = strpos($mystring, $findme);
  3. $findme2 = '[/tekst_top]';
  4. $tekst_top2 = strpos($mystring, $findme2);
  5. $tekst_top = $tekst_top +11;
  6. $tekst_top2 = $tekst_top2 - 11;
  7. $tekst_top_display = substr($tresc, $tekst_top, $tekst_top2);


  1. $findme = '[tekst_srodek]';
  2. $tekst_srodek = strpos($mystring, $findme);
  3. $findme2 = '[/tekst_srodek]';
  4. $tekst_srodek2 = strpos($mystring, $findme2);
  5. $tekst_srodek = $tekst_srodek +14;
  6. $tekst_srodek2 = $tekst_srodek2 - 14;
  7. $tekst_srodek_display = substr($tresc, $tekst_srodek, $tekst_srodek2);

  1. $findme = '[tekst_dol]';
  2. $tekst_dol = strpos($mystring, $findme);
  3. $findme2 = '[/tekst_dol]';
  4. $tekst_dol2 = strpos($mystring, $findme2);
  5. $tekst_dol = $tekst_dol +11;
  6. $tekst_dol2 = $tekst_dol2 - 11;
  7. $tekst_dol_display = substr($tresc, $tekst_dol, $tekst_dol2);


I skrypt zaczyna dokładnie od tekstu - omijając znacznik. Lecz kończy zostawiają go.
Próbowałem np odejmować więcej liczb, aż w końcu zadziała i tak np:
tekst_top2 - 1599
tekst_srodek2 - 1867
tekst_dol2 - 2415

Ale przy zmianie wielkości tekstu, nie działa tak jak wcześniej smile.gif

Wiem że kod można zoptymalizować, jednak najpierw postawił bym na funkcjonalność.

Proszę o pomoc i z góry dziękuje
Pozdrawiam.
amii
Może spróbuj wydobyć to wyrażeniami regularnymi wystarczy prosty preg_match
b4rt3kk
Do tego typu problemów zamiast stropos używaj preg_match z odpowiednim wyrażeniem regularnym. Np.

  1. preg_match('/[carpet](.*)[\/carpet]/', $string, $matches);
KrzysiekKCN
Dziękuje bardzo,
Przy okazji mniej więcej ogarnołem preg_match.

Rozwiązanie jak najbardziej poprawne smile.gif
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.