zeker: "([^"]+)"
Dus iets als:
<?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
)
http://www.gskinner.com/RegExr/
Link gekopieerd
Maar het hoeft niet met een regex :-)
function getQuoted($var) {
for($ret = array(),
$parts = explode('"', $var),
$i = 0;
isset($parts[$i + 1]);
++$i
) {
if ($i & 1) {
$ret[] = $parts[$i];
}
}
return $ret;
}
Link gekopieerd
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..
Link gekopieerd
En je weet toch hopelijk dat dat onzin is?
Zie mijn functie die precies hetzelfde doet...
Link gekopieerd
ha merci hipska ;) just wat ik nodig had!
Zou je ev enige verklaring kunnen geven voor je regex? zodat ik er ook aan uit kan :p
Link gekopieerd
Zeker: "(^")+"
" : 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.
Link gekopieerd
?
Onbekende gebruiker
07-01-2010 15:37
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..
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.
Link gekopieerd