Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Wyrażenie regularne a znaki specjalne
@rtur
post
Post #1





Grupa: Zarejestrowani
Postów: 254
Pomógł: 3
Dołączył: 23.02.2006

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


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

Ten post edytował @rtur 29.06.2014, 08:24:36
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 8)
Pyton_000
post
Post #2





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


  1. preg_match('/(\&[\w\d]+;)/', $ciag);
Go to the top of the page
+Quote Post
@rtur
post
Post #3





Grupa: Zarejestrowani
Postów: 254
Pomógł: 3
Dołączył: 23.02.2006

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


nieaktualne, znalazłem błąd (IMG:style_emoticons/default/smile.gif) później miałem
  1. explode(' - ',$ciag);
i nie chciało działać dlatego (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
Pyton_000
post
Post #4





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


Chyba wcześniej (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post
@rtur
post
Post #5





Grupa: Zarejestrowani
Postów: 254
Pomógł: 3
Dołączył: 23.02.2006

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


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. }
Go to the top of the page
+Quote Post
Pyton_000
post
Post #6





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


trochę szybciej:

  1. $songtitle = explode(' ? ',$songtitle);
  2.  
  3. if(!isset($songtitle[1]))
  4. $songtitle[1] = null;
  5.  
  6. return $songtitle;


Ten post edytował Pyton_000 29.06.2014, 14:04:48
Go to the top of the page
+Quote Post
@rtur
post
Post #7





Grupa: Zarejestrowani
Postów: 254
Pomógł: 3
Dołączył: 23.02.2006

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


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?
Go to the top of the page
+Quote Post
Pyton_000
post
Post #8





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


  1. explode(' – ',$songtitle, 2);
Go to the top of the page
+Quote Post
@rtur
post
Post #9





Grupa: Zarejestrowani
Postów: 254
Pomógł: 3
Dołączył: 23.02.2006

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


Działa tak jak chciałem, dziękuje bardzo za okazaną pomoc (IMG:style_emoticons/default/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];
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 15.09.2025 - 11:58