reguliere expressie om tekst tussen "" te dedecteren

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Ventilatiesysteem Productontwikkelaar HBO WO Verwa

Samengevat: Zij bieden flexibele ventilatiematerialen, geluidsdempers, rookgasafvoer producten en industrieslangen. Ben jij een technisch productontwikkelaar? Heb jij ervaring met het ontwikkelen van nieuwe producten? Vaste baan: Technisch Productontwikkelaar HBO WO €3.000 - €4.000 Zij bieden een variëteit aan flexibele ventilatiematerialen, geluiddempers, rookgasafvoer producten, industrieslangen en ventilatieslangen voor de scheepsbouw. Met slimme en innovatieve materialen zorgen wij voor een gezonde en frisse leefomgeving. Deze werkgever is een organisatie die volop in ontwikkeling is met hardwerkende collega's. Dit geeft goede ontwikkelingsmogelijkheden. De branche van dit bedrijf is Techniek en Engineering. Functie: Voor de vacature als Technisch Productontwikkelaar Ede Gld HBO WO ga

Bekijk vacature »

Subutux

subutux

07/01/2010 11:41:00
Quote Anchor link
hoi,

sinds kort ben ik begonnen met reguliere expressies. Nu wil ik bv uit de volgende variabele:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$var = 'test "dinges en nog wat 1234" blah "foo bar"'

het volgende als resultaat krijgen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
$result=array(
                     'dinges en nog wat 1234',
                     'foo bar'
                    )


iemand een ideetje? dit moet toch mogelijk zijn met preg_match of niet?
 
PHP hulp

PHP hulp

27/11/2024 06:25:22
 
Hipska BE

Hipska BE

07/01/2010 11:58:00
Quote Anchor link
zeker: "([^"]+)"
Dus iets als:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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
)


http://www.gskinner.com/RegExr/
Gewijzigd op 01/01/1970 01:00:00 door Hipska BE
 
Richard van Velzen

Richard van Velzen

07/01/2010 13:02:00
Quote Anchor link
Maar het hoeft niet met een regex :-)

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function getQuoted($var) {
    for($ret = array(),
        $parts = explode('"', $var),
        $i = 0;

        isset($parts[$i + 1]);

        ++$i
    ) {
        if ($i & 1) {
            $ret[] = $parts[$i];
        }
    }
    return $ret;
}
 
Hipska BE

Hipska BE

07/01/2010 13:30:00
Quote Anchor link
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..
Gewijzigd op 01/01/1970 01:00:00 door Hipska BE
 
Richard van Velzen

Richard van Velzen

07/01/2010 14:07:00
Quote Anchor link
En je weet toch hopelijk dat dat onzin is?

Zie mijn functie die precies hetzelfde doet...
 
Subutux

subutux

07/01/2010 14:13:00
Quote Anchor link
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
 
Hipska BE

Hipska BE

07/01/2010 14:51:00
Quote Anchor link
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.
 
Subutux

subutux

07/01/2010 15:26:00
Quote Anchor link
bedankt!
 

07/01/2010 15:37:00
Quote Anchor link
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.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.