Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> preg_match_all
MitS
post
Post #1





Grupa: Zarejestrowani
Postów: 262
Pomógł: 5
Dołączył: 8.02.2005
Skąd: Olsztyn / Zatorze

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


Witam serdecznie,

Mam mały problem z wyrażeniami regularnymi w preg_match_all.
Otóż pisze sobie funkcję (podam okrojoną wersję):

  1. <?php
  2. function fun($string, $cWords = ''){
  3. @preg_match_all("@{[^.]+}@", $string, $argc);
  4. echo '<pre>';
  5. print_r($argc);
  6. echo '<pre>';
  7. }
  8.  
  9. $text = 'To jest {dobry|super|wspaniały|cudowny}, przykładowy tekst z różnymi tagami. I c
    hciałbym go {wykasowac|wyrzucic|uciąć|wywalić} i dalej i dalej.'
    ;
  10. echo '1.<br />';
  11. fun($text, 3);
  12.  
  13. echo '2.<br />';
  14. $text = 'Był sobie raz {król|królowa|książe|królewna}, którzy żyli sobie w {mieście|króle
    stwie|dolinie|górach} i panowali przez 1000 lat.'
    ;
  15. fun($text, 3);
  16. ?>


moje pytanie brzmi:
czemu dla pierwszego przypadku preg_match_all działa dobrze tzn. wyłapuje wszystkie wyrażenia w zdaniu które są między: {}
i efektem jest tablica

  1. <?php
  2. (
  3. [0] => Array
  4. (
  5. [0] => {dobry|super|wspaniały|cudowny}
  6. [1] => {wykasowac|wyrzucic|uciąć|wywalić}
  7. )
  8. )
  9. ?>


zaś dla drgiego przypadku dziala zle tzn. efektem jest błędna tablica:
  1. <?php
  2. (
  3. [0] => Array
  4. (
  5. [0] => {król|królowa|książe|królewna}, którzy żyli sobie w {mieście|królestwie|dolinie|górach}
  6. )
  7. )
  8. ?>


(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)
czy można to w prosty sposob naprawic ? prosiłbym bardzo o odpowiedź.

Ten post edytował MitS 17.06.2008, 13:07:27
Go to the top of the page
+Quote Post

Posty w temacie


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: 18.12.2025 - 15:24