Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Jak rodzielić ciąg znaków?
Forum PHP.pl > Forum > PHP
artuross
Muszę rozdzielić ciąg znaków w określonym miejscu, ale chodzi o to, że poszukiwany kawałek może występować kilka razy całej zmiennej, co wtedy?

  1. $odczyt = "Książka by Autor";
  2. $a = explode(' by ', $odczyt);
  3.  
  4. $odczyt = "'Książka by Autor' by Autor"; //co tutaj?
gorden
może spróbuj split, to takie explode na wyrażeniach regularnych
Spawnm
W explode masz 3 parametr limit, może wystarczy. A jak nie to preg_split();
artuross
Tylko, że ja nie zależnie od ilości ' by ' w ciągu zawsze chcę rozdzielić przy ostatnim, więc limit mi tutaj nie pomoże. Split nie jest zdeprecjonowane (czy jak to się tam pisze)?
Fifi209
preg_split

@down
Faktycznie, teraz zauważyłem. Może dlatego, że nie objąłeś w tagi manual i nie rzuciło się w oczy od razu. wink.gif
Spawnm
Od biedy może dać strripos() + dwa substr().

@fifi - czy ja już tej funkcji nie podawałem ? wink.gif
Methestel
Można łatwo napisać inną wersję funkcji explode która dzieli ciąg znaków od końca i która jest bardzo przydatna w tym przypadku:

  1. ini_set("display_errors", 1);
  2.  
  3. $tester = array('"Tytuł by Książka" by Autor', 'Tytuł by Autor', '', 'Tytuł');
  4.  
  5. foreach($tester as $test) {
  6. echo implode(" - ", explodeRev(' by ', $test, 2));
  7. echo "<br />";
  8. }
  9.  
  10. function explodeRev($delimiter, $string, $limit = null) {
  11. $r = explode(strrev($delimiter), strrev($string), $limit);
  12. foreach($r as $key => $value) {
  13. $r[$key] = strrev($value);
  14. }
  15. return array_reverse($r);
  16. }


Wynik działania tego skryptu to:

Kod
"Tytuł by Książka" - Autor
Tytuł - Autor

Tytuł
artuross
Cytat(Methestel @ 30.12.2011, 18:33:53 ) *
Można łatwo napisać inną wersję funkcji explode która dzieli ciąg znaków od końca i która jest bardzo przydatna w tym przypadku:

  1. ini_set("display_errors", 1);
  2.  
  3. $tester = array('"Tytuł by Książka" by Autor', 'Tytuł by Autor', '', 'Tytuł');
  4.  
  5. foreach($tester as $test) {
  6. echo implode(" - ", explodeRev(' by ', $test, 2));
  7. echo "<br />";
  8. }
  9.  
  10. function explodeRev($delimiter, $string, $limit = null) {
  11. $r = explode(strrev($delimiter), strrev($string), $limit);
  12. foreach($r as $key => $value) {
  13. $r[$key] = strrev($value);
  14. }
  15. return array_reverse($r);
  16. }


Wynik działania tego skryptu to:

Kod
"Tytuł by Książka" - Autor
Tytuł - Autor

Tytuł


Tak myślałem, że dobrym sposobem będzie odwrócenie ciągu wink.gif W każdym razie dzięki
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.