Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Jak rodzielić ciąg znaków?
artuross
post 30.12.2011, 14:10:28
Post #1





Grupa: Zarejestrowani
Postów: 164
Pomógł: 9
Dołączył: 30.12.2011

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


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?


--------------------
Pomoglem? Daj pomogl!
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
gorden
post 30.12.2011, 14:27:41
Post #2





Grupa: Zarejestrowani
Postów: 486
Pomógł: 101
Dołączył: 27.06.2010

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


może spróbuj split, to takie explode na wyrażeniach regularnych
Go to the top of the page
+Quote Post
Spawnm
post 30.12.2011, 14:33:45
Post #3





Grupa: Moderatorzy
Postów: 4 069
Pomógł: 497
Dołączył: 11.05.2007
Skąd: Warszawa




W explode masz 3 parametr limit, może wystarczy. A jak nie to preg_split();
Go to the top of the page
+Quote Post
artuross
post 30.12.2011, 14:50:43
Post #4





Grupa: Zarejestrowani
Postów: 164
Pomógł: 9
Dołączył: 30.12.2011

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


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)?


--------------------
Pomoglem? Daj pomogl!
Go to the top of the page
+Quote Post
Fifi209
post 30.12.2011, 14:54:47
Post #5





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


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

Ten post edytował Fifi209 30.12.2011, 15:31:34


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
Spawnm
post 30.12.2011, 15:23:55
Post #6





Grupa: Moderatorzy
Postów: 4 069
Pomógł: 497
Dołączył: 11.05.2007
Skąd: Warszawa




Od biedy może dać strripos() + dwa substr().

@fifi - czy ja już tej funkcji nie podawałem ? wink.gif
Go to the top of the page
+Quote Post
Methestel
post 30.12.2011, 18:33:53
Post #7





Grupa: Zarejestrowani
Postów: 46
Pomógł: 10
Dołączył: 30.06.2008

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


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ł
Go to the top of the page
+Quote Post
artuross
post 31.12.2011, 12:42:07
Post #8





Grupa: Zarejestrowani
Postów: 164
Pomógł: 9
Dołączył: 30.12.2011

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


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


--------------------
Pomoglem? Daj pomogl!
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 24.07.2025 - 16:04