Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Wyrażenie regularne
Forum PHP.pl > Forum > Przedszkole
maki1234
  1. $_locale->load('u');
  2.  
  3. $bbcode_info = array(
  4. 'name' => __('Underline'),
  5. 'description' => __('Display the selected text in underline'),
  6. 'value' => 'u'
  7. );
  8.  
  9. if($bbcode_used)
  10. {
  11. $text = preg_replace('#\[u\](.*?)\[/u\]#si', '<span class=\'underline\'>\1</span>', $text);
  12. }


Mam taki kodzik (zaczerpnięty z EF5), jedno proste pytanie co oznacza \1 w tekście na który przekształacamy? Może ktoś podać link do jakiegoś tutka tłuamczącego właśnie to lub sam wyjaśni?

Pytanie pewno banalne
Pyton_000
http://php.net/manual/en/function.preg-replace.php sekcja replacement
maki1234
Jakoś tak to rozumiem że dając \1 odwołujemy się do 1 wyrażenia czy co? Wiem że nikt tu gotowego rozwiązania nie poda też chciałbym się pogłowić i robię to wink.gif
Dobrze to rozumiem czy całkiem nie tego?...
Pyton_000
\1 lub $1 to odwołanie się do pierwszego znalezionego wyrażenia w (), jakbyś miał kilka () to kolejno \2 \3 itd.
maki1234
Ok Ale jest to powszechnie używane i zalecane czy można pominąć? Prosty przykład jak ten parser bbcode musi to mieć?
Pyton_000
Musi, ponieważ tam ląduje wynik dopasowania.

Czyli to co jest znalezione pomiędzy tagami ląduje w znaczniku html
maki1234
Czyli podumowując i rozwiewając wszelkie wątpliwosci, mam wyrażenie:

  1. preg_replace(#^\[b\](.*?)\[\/b\]$#, "<b>\1</b>", $tekst)


Mam w $tekst np zdanie to po przekształceniu w znaczniki <b> wskoczy właśnie to zdanie?
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.