Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: preg_match
Forum PHP.pl > Forum > PHP
widmogrod
Witam mam mały problem

przez funkcje preg_match "przecedzam", w mniej więcej taki sposób $zapytanie

  1. <?php
  2.  
  3. $dopasowanie = array();
  4. $zapytanie = 'INSERT INTO niusy VALUES ("yoda","KAKAKA")';
  5. $wzor = '/^INSERT\s+(?:INTO\s+(?P<gdzie>\w+)\w+)\s+(?:VALUES\s+\((?P<co>.+?)\))$/xi';
  6. preg_match($wzor, $zapytanie, $dopasowanie);
  7. print '<pre>';
  8. print_r($dopasowanie);
  9. print '</pre>';
  10.  
  11. ?>


otrzymuje tablice taką jaką chcę

Cytat
Array
(
    [0] => INSERT INTO niusy VALUES ("yoda","KAKAKA")
    [gdzie] => nius
    [1] => nius
    [co] => "yoda","KAKAKA"
    [2] => "yoda","KAKAKA"
)


ale jest mały problem, gdy zapytanie wygląda mniej więcej tak

  1. <?php
  2.  
  3. $zapytanie = 'INSERT INTO VALUES ("yoda","KAKAKA")';
  4.  
  5. ?>


zwraca mi pustą tablicę a chcę mieć tylko puste pole w tablicy [gdzie]

wzoruję się na rozwiązaniu z manuala php ale problem mam z zrozumieniem go do końca a ono działa mniej więcej w taki sposób jaki bym chciał ...

może wiecie jak rozwiązać ten problem lub znacie inny sposób ?!?
mariuszn3
Zamiast plusa zastosuj gwiazdkę.
Myślę, że to powinno zadziałać:
Kod
^INSERT\s+(?:INTO\s+(?P<gdzie>\w*).*?)(?:VALUES\s+\((?P<co>.+?)\))$
widmogrod
Wielkie dzięki zadziałało thumbsupsmileyanim.gif
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.