Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Ereg. Jak utworzyć $pattern?
Forum PHP.pl > Forum > Przedszkole
rolling_stone
Hej!

W sumie to trochę już PHP znam, ale z wyrażeniami regularnymi nigdy nie miałem do czynienia, więc jestem zdany na waszą łaskę i niełaskę.
Otóż z jakiegoś tam tekstu o postaci:
Cytat
$string = 'Wartość właściwa {nazwa_funkcji:parametr_funkcji}';


Przykładowo (dla waluty):
Cytat
$string = 'Mołdawski lej {currency:MDL}';


chciałbym wydzielić następujące części:
CODE
$array[0] = 'Mołdawski lej';
$array[1] = 'currency';
$array[2] = 'MDL';



Pomożecie mi to zrobić? Dodam, że postać początkowego ciągu mogę dowolnie modyfikować (tak, by ewentualnie było łatwiej). Thx!
webdice
  1. <?php
  2.  
  3. $string = 'Mołdawski lej {currenc:MDL}';
  4.  
  5. preg_match ('#(.*){([:]+:([^{]+)#', $string, $result);
  6.  
  7. print_r ($result);
  8.  
  9. ?>
rolling_stone
Noooo prawie smile.gif
Bo ten $pattern się nie sprawdza, ale wyszło mi z niego, że

  1. <?php
  2.  
  3. $regs = preg_match ('#(.*){([^}]+)}#', $field['value'], $result) // Array ( [0] => 'Mołdawski lej (currenc:MDL)' [1] => 'Mołdawski lej' [2] => 'currenc:MDL' )
  4.  
  5. // Dzięki temu mogę
  6.  
  7. $arr = explode:, $regs);
  8.  
  9. ?>


Działa za to:

  1. <?php
  2.  
  3. preg_match ('#(.*){([^}]+:([^}]+)}#', $field['value'], $result);
  4.  
  5. ?>
webdice
Coś mi forum poucinało. Ma być tak:

Kod
<?php

$string = 'Mołdawski lej {currency:MDL}';

preg_match ('#(.*)\{([^:]+):([^\{]+)\}#', $string, $result);

print_r ($result);

?>
rolling_stone
To nawet do tych samych wniosków doszliśmy smile.gif
Dzięki wielkie!
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.