Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Problem z wyrażeniami regularnymi..., Spacja rozwala wszystko...
zlw
post 13.08.2007, 12:11:26
Post #1





Grupa: Zarejestrowani
Postów: 44
Pomógł: 0
Dołączył: 30.04.2007
Skąd: WWA

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


Witam,

Mam taki oto kod PHP

  1. <?php
  2. $search  = array( '@<ossus>(w+)|(w+)</ossus>@im', '@<ossus>(w+)</ossus>@im' );
  3. $replace = array( '<a href="http://ossus.pl/biblioteka/1">2</a>', '<a href="http://ossus.pl/biblioteka/1">1</a>' );
  4. $text  = preg_replace( $search, $replace, $news[news_body] );
  5. ?>


Kod ten ma znajdować w zmiennej $text wszystkie wystąpienia <ossus> i </ossus> i zamieniać je na linki.
Wszystko jest ok dopóki wyglądają one tak:
<ossus>text</ossus> <ossus>textlinka|tekstdowyswietlenia</ossus>

Ale kiedy w tekście przed albo po '|' pojawi się spacja (np. <ossus>text|tekst do wyświetlenia</ossus>), wszystko się rozwala.
Czy ktoś może coś poradzić?


--------------------
Krzysztof Zalewski :: blog

----------------------------------------------------------------------------------------

Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
AxZx
post 13.08.2007, 12:33:06
Post #2





Grupa: Zarejestrowani
Postów: 1 385
Pomógł: 55
Dołączył: 1.03.2005
Skąd: śląsk

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


moze sprobuj zamiast
Kod
'@<ossus>(\w+)\|(\w+)</ossus>@im'


szukac
Kod
'@<ossus>(.*)\|(.*)</ossus>@im'


--------------------
aplikacje internetowe | Symfony
Go to the top of the page
+Quote Post
zlw
post 13.08.2007, 13:08:36
Post #3





Grupa: Zarejestrowani
Postów: 44
Pomógł: 0
Dołączył: 30.04.2007
Skąd: WWA

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


No niestety nic to nie zmieniło...


--------------------
Krzysztof Zalewski :: blog

----------------------------------------------------------------------------------------

Go to the top of the page
+Quote Post
barat
post 13.08.2007, 14:45:34
Post #4





Grupa: Zarejestrowani
Postów: 183
Pomógł: 0
Dołączył: 19.05.2007

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


chyba nie:

'@<ossus>(\w+)\|(\w+)</ossus>@im', '@<ossus>(\\w+)</ossus>@im

a

'@(<ossus>)(\w+)\|(\w+)(</ossus>)@im', '@(<ossus>)(\\w+)(</ossus>)@im

Ale mogę się mylić smile.gif

Chyba każdy "człon" bierze sie w osobny nawias smile.gif

Ten post edytował barat 13.08.2007, 14:47:24
Go to the top of the page
+Quote Post
sheerun
post 13.08.2007, 15:23:42
Post #5





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 20.05.2007

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


  1. <?php
  2. $search  = array( '@<ossus>([^|]+?)|([^<]+?)</ossus>@im', '@<ossus>([^<]+?)</ossus>@im' );
  3. ?>


\w oznacza zbiór [a-zA-Z0-9_], czyli bez spacji, dlatego się wszystko waliło
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: 14.08.2025 - 07:40