Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]explode() i myślnik
Forum PHP.pl > Forum > Przedszkole
-Andrzej-
Witam, mam problem z funkcją explode, który polega na tym, że nie mogę poradzić sobie z podziałem stringa w zależności od wystąpienia myślnika.

  1. $title_full = get_the_title();
  2. $title_part = explode(' ', $title_full);

Działa dobrze i $title_part[0] dla Jakiś - tytuł do wyświetlenia wyświetla Jakiś

Problem w tym, że nie zawsze przed myślnikiem między słowami nie wystąpi spacja dlatego chciałem to rozwiązać tak:

  1. $title_full = get_the_title();
  2. $title_part = explode(' - ', $title_full);


Jednak w takim wypadku wyświetlone zostaje Jakiś - tytuł do wyświetlenia
Jak podzielić string w zależności od wystąpienia myślników?
maniana
strpos ? + ew. obliczenia?
kontur
albo bez obliczen podwojnie

$napis=str_replace ('-',' - ',$napis);
$napis=str_replace('dwie spacje', 'jedna spacja',$napis)

wtedy zawsze '-' bedzie ubrane tak samo w spacje.
lukesh
Po pierwsze, to w Twoim skrypcie nigdzie nie ma myślnika, tylko dywiz.

— <- pauza / myślnik
– <- półpauza / myślnik
- <- dywiz

Myślę, że najlepszym rozwiązaniem będzie dzielenie ciągów tekstu za pomocą samego dywizu bez spacji, a następnie użycie funkcji trim do usunięcia spacji na końcu i na początku tekstu.

  1. $title_part = explode('-', $title_full);
  2. $title_part[0] = trim($title_part[0]);
-Andrzej-
Dzięki wszystkim za pomoc, jednak nadal coś nie działa.
Próbowałem wklejać do explode:

  1. $title_part = explode('-', $title_full);
  2. $title_part[0] = trim($title_part[0]);


po kolei wszystkie 3 znaki i na żadnym nie zadziałało.
lukesh
  1. <?php
  2. $title_full = 'Jakiś - tytuł do wyświetlenia';
  3. $title_part = explode('-', $title_full);
  4. $title_part[0] = trim($title_part[0]);
  5. $title_part[1] = trim($title_part[1]);
  6. echo $title_part[0]; // wyświetla "Jakiś"
  7. echo '<br />';
  8. echo $title_part[1]; // wyświetla "tytuł do wyświetlenia"
  9. ?>


U mnie powyższy kod działa bez problemu.

Widzę, że korzystasz z funkcji get_the_title(). Prawdopodobnie to tam może być błąd. Co dokładnie ta funkcja robi? Jesteś pewien, że skrypt pobiera dywiz, a nie np. & #45;? Ewentualnie & #150; albo & ndash; w przypadku półpauzy lub & #151; albo & mdash; w przypadku pauzy.

Po & nie ma spacji, ale inaczej nie mogę zapisać, ponieważ skrypt forum zamienia te kody na odpowiednie znaki.
-Andrzej-
Jest to Wordpressowa funkcja: http://codex.wordpress.org/Function_Reference/get_the_title i rzeczywiście po jej stronie leżał problem.
Funkcja wyświetlała znak w postaci . Dziękuje za pomoc i pozdrawiam.
-Andrzej-
Widzę, że znak został przetworzony więc wrzucam go w tagach
  1. &#8211;
, może komuś się kiedyś przyda.
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.