[PHP/PCRE] preg_match i operator |

0

Mam taki problem, otoz potrzebuje przez preg_match wylapac jakis fragment tekstu ale z haczykiem, moze (ale nie musi) on byc zamkniety w cudzyslowiach i apostrofach, oczywiscie w wyniku ich nie chce. Napisalem sobie cos takiego:

$s = '"cos"';
$pattern = '#("([\w\d_]+)"|\'([\w\d_]+)\'|([\w\d_]+))#s';
preg_match($pattern, $s, $match);
echo($match[2]);

Mialem nadzieje, ze | sprawi, ze te trzy przypadki beda w jednym miejscu w wyniku ($match[2]), ale tak nie jest, jak wpisze cos (bez cudzyslowia) to znajdzie sie ono w $match[4]. Czy wie ktos moze jak to ugryzc? Jasne, mozna zrobic warunek/switcha ale sami powiedzcie, chcielibyscie tak to wykonac? Chyba nie.

0

Hmm, to raczej tak się robi:

$pattern = '/([\'"]?)([^\1]+)\1/';

<font size="1">[drobna poprawka]</span>
<font size="1">[większa poprawka]</span> - poprzednie było błędne - zmylił mnie Twój zapis ;)
to też nie jest najlepsze bo nie ma się o co zahaczyć...

<font size="1">[edited (again)]</span>
ach, za mało info mam - wywaliłem ten kod stąd

0

/(['"]?)([^\1]+)\1/

Ja ja zylem bez wiedzy, ze tak mozna, kurcze dzieki :)

0
Wolverine napisał(a)

Ja ja zylem bez wiedzy, ze tak mozna
Polecam: http://www.regular-expressions.info

1 użytkowników online, w tym zalogowanych: 0, gości: 1