reguliere expressie om tekst tussen "" te dedecteren
sinds kort ben ik begonnen met reguliere expressies. Nu wil ik bv uit de volgende variabele:
het volgende als resultaat krijgen:
iemand een ideetje? dit moet toch mogelijk zijn met preg_match of niet?
Dus iets als:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
$str = 'test "dinges en nog wat 1234" blah "foo bar"';
$regEx = '#"([^"]+)"#';
if(preg_match_all($regEx, $str, $matches)){
print_r($matches[1]);
}else echo 'Niets gevonden in $str';
?>
UITVOER:
Array
(
[0] => dinges en nog wat 1234
[1] => foo bar
)
$str = 'test "dinges en nog wat 1234" blah "foo bar"';
$regEx = '#"([^"]+)"#';
if(preg_match_all($regEx, $str, $matches)){
print_r($matches[1]);
}else echo 'Niets gevonden in $str';
?>
UITVOER:
Array
(
[0] => dinges en nog wat 1234
[1] => foo bar
)
http://www.gskinner.com/RegExr/
Gewijzigd op 01/01/1970 01:00:00 door Hipska BE
EDIT: Zie de edit van mijn vorige bericht met werkende php code..
Gewijzigd op 01/01/1970 01:00:00 door Hipska BE
Zie mijn functie die precies hetzelfde doet...
Zou je ev enige verklaring kunnen geven voor je regex? zodat ik er ook aan uit kan :p
" : matcht een " in het begin
(^")+ : matcht één of meerdere tekens (neem een * ipv + voor 0 of meerdere tekens)
^" : tekens mogen niet een " zijn
dus alles samen, match een stuk tekst dat tussen 2 " staat en erin mogen geen " staan.
bedankt!
Hipska schreef op 07.01.2010 13:30:
Je weet toch zelf ook wel dat Explode de minst bruikbare manier is voor dit soort dingen?
EDIT: Zie de edit van mijn vorige bericht met werkende php code..
EDIT: Zie de edit van mijn vorige bericht met werkende php code..
Leg dan effe uit waarom dat is?
Tekst functies zijn eigenlijk per definitie beter dan intensieve regexen.
Als je zoiets simpels wilt doen als dit moet je zeker geen regex gebruiken.