Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Wyrażenie regularne a znaki specjalne
Forum PHP.pl > Forum > Przedszkole
@rtur
Mam string zapisany w formie Alan Barry – Come On

Jak w tym ciągu poprzez funkcję preg_match znaleźć zwrot " – " ?

próbowałem już:

  1. preg_match('/ – /', $ciag)
  2. preg_match('/\s\–\s/', $ciag);
  3. preg_match('/\s–\s/', $ciag);


i nic... jak zatem wpisywać w preg_match kod typu & #039;, & amp; (celowo oddzieliłem spacją żeby edytor nie zamienił) i inne tego typu aby funkcja preg_match je widziała?

PS. Szybka edycja zgubiła mi kod – po zapisaniu i zamiast niego dała znak zapytania "?"
Pyton_000
  1. preg_match('/(\&[\w\d]+;)/', $ciag);
@rtur
nieaktualne, znalazłem błąd smile.gif później miałem
  1. explode(' - ',$ciag);
i nie chciało działać dlatego smile.gif
Pyton_000
Chyba wcześniej wink.gif
@rtur
później
bo to ma najpierw sprawdzać czy jest coś a jak jest to rozbić:

  1. function artist_and_song($songtitle){
  2. if(preg_match('/\s–\s/', $songtitle)){
  3. $songtitle= explode(' – ',$songtitle);
  4. $artist= $songtitle[0];
  5. $song= $songtitle[1];
  6. }
  7. else{
  8. $artist= $songtitle;
  9. $song=null;
  10. }
  11. return array ($artist, $song);
  12. }
Pyton_000
trochę szybciej:

  1. $songtitle = explode(' ? ',$songtitle);
  2.  
  3. if(!isset($songtitle[1]))
  4. $songtitle[1] = null;
  5.  
  6. return $songtitle;
@rtur
Dzięki, w między czasie wynikł jeszcze jeden problem, czasami zdarzają się ciągi zawierające więcej niż jeden ' – ', explode tworzy wtedy więcej niż 2 elementy tablicy jak zatem połączyć wszystkie oprócz pierwszego, elementy tablicy w jeden? wiem że mogę użyć implode, tylko jak zacząć od drugiego elementu?
Pyton_000
  1. explode(' – ',$songtitle, 2);
@rtur
Działa tak jak chciałem, dziękuje bardzo za okazaną pomoc smile.gif

  1. function artist_song($songtitle){
  2. $songtitle= explode(' – ',$songtitle, 2);
  3. if(!isset($songtitle[1])){
  4. $songtitle[1] = $songtitle[0];
  5. $songtitle[0] = 'N/A';
  6. }
  7. return $songtitle;
  8. }
  9. $string1 = artist_song('Bee Gees Saturday Night Fever Disco Inferno');
  10. $string2 = artist_song('Bee Gees – Saturday Night Fever – Disco Inferno');
  11. echo 'artysta1: '.$string1[0].'<br />';
  12. echo 'utwor1: '.$string1[1].'<br /><br />';
  13. echo 'artysta2: '.$string2[0].'<br />';
  14. echo 'utwor2: '.$string2[1];
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.