![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 270 Pomógł: 0 Dołączył: 15.06.2003 Ostrzeżenie: (0%) ![]() ![]() |
Mam taki string "SELECT id,record FROM data WHERE data = 'cb167'" i po raz kolejny mamm problem z opcjonalnym składnikiem. czy można jakoś napisać to wyrażenie żeby działło opcjonalnie z pogrubioną częścią stringa??
Czyli np z : "SELECT id,record FROM data"; [php:1:72a87aefd9]<?php $input = 'SELECT id,record FROM data WHERE data = 'cb167''; preg_match("/([A-Z]+) (.*?) FROM ([A-Za-z]+) WHERE ([a-zA-Z]+) = '([a-zA-Z0-9]+)'/is",$input,$match); ?>[/php:1:72a87aefd9] |
|
|
![]()
Post
#2
|
|
Grupa: Przyjaciele php.pl Postów: 1 717 Pomógł: 0 Dołączył: 12.06.2002 Skąd: Wolsztyn..... Studia: Zielona Góra Ostrzeżenie: (0%) ![]() ![]() |
W wielkim skrocie to tak:
[php:1:06125e22f8]<?php if (warunek) { $where = " WHERE data = '$costam'" } else { $where = ""; } $q = "SELECT id, record FROM data". $where; // ... ?>[/php:1:06125e22f8] BTW problem raczej nie ma nic wspolnego z regexpami (no chyba ze zle cos zrozumialem, w takim razie wyjasnij lepiej), wiec zmien temat na bardziej stosowny. |
|
|
![]()
Post
#3
|
|
Grupa: Zarząd Postów: 3 503 Pomógł: 28 Dołączył: 17.10.2002 Skąd: Wrocław ![]() |
Lub ekonomiczniej:[php:1:962364649e]<?php
$q = 'SELECT id, record FROM data'; $q .= (!empty($costam)) ? " WHERE data = '".$costam."'" : '' ; ?>[/php:1:962364649e] |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 270 Pomógł: 0 Dołączył: 15.06.2003 Ostrzeżenie: (0%) ![]() ![]() |
to co piszecie to jest oczywiste ale chodzi o coś innego.
Dostaje taki string: SELECT id,record FROM data WHERE data = 'cb167' i teraz chciałbym przez wyrażenia wyciągnąć z niego składniki. Najlepiej nadaje sie do tego preg_match. Mozna to zrobić poprzez eregi [php:1:994b4376ec]<?php if (eregi("WHERE", $input)) ?>[/php:1:994b4376ec] i potem to przerabiać po kawałku. Chce to uniknąc i zrobić to jednym wyrażeniem. Czyli to zamienić na jedno wyrażenie gdzie WHERE .... byłoby składnikiem opcjinalnym i ywciągałbym o nim infornacje tylk jeśli by wystąpiło. [php:1:994b4376ec]<?php preg_match("/SELECT (.*?) FROM ([A-Za-z]+)/is",$input,$match); if (eregi("WHERE", $input)) { preg_match("/WHERE ([a-zA-Z]+) = '([a-zA-Z0-9]+)/is",$input,$match); } ?>[/php:1:994b4376ec] |
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 03:51 |