Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z wyrażeniami regularnymi...
Forum PHP.pl > Forum > PHP
zlw
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ć?
AxZx
moze sprobuj zamiast
Kod
'@<ossus>(\w+)\|(\w+)</ossus>@im'


szukac
Kod
'@<ossus>(.*)\|(.*)</ossus>@im'
zlw
No niestety nic to nie zmieniło...
barat
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
sheerun
  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
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.