Flemming Joensson <joensson@fjerndette.cs.auc.dk> wrote in
news:Xns9321B9F00BE06joenssoncsaucdk@130.225.247.90:
> Jeg vil gerne kunne skrive f›lgende i et s›gefelt og s›ge p† sider der
> har b†de ord1 og ord2 i sig og sekvensen ord3 efterfulgt af ord4.
>
> Jeg forstiller mig at det skal skrives p† denne m†de i feltet:
> ord1 ord2 "ord3 ord4"
[snip]
> S† mit problem kan vel egentlig koges ned til at jeg meget gerne vil
> kunne se efter jeg har udf›rt preg_split, hvilke ord der var inden i
> dobbeltquotes og hvilke der ikke var - hvordan skal jeg skrive det for
> at jeg kan g›re det?
preg_match_all() er en dejlig funktion :)
Ting i parenteser bliver sorteret ud i arrays (første parentes i eet
array, anden parentes i andet array, osv.), så følgende pattern:
$pattern = '/([a-zA-Z0-9]+)|"([a-zA-Z0-9 ]+)"/';
vil resultere i et array indeholdende 3 arrays - det første indeholder
alt det der er blevet matched, og det er de to sidste vi er interesserede
i - de indeholder nemlig det der er blevet matched af første henholdsvis
anden parentes.
Første parentes matcher enkelte ord, mens anden parentes matcher et antal
ord omgivet af gæs.
.... det er nok nemmest bare at give dig koden og en henvisning til
manualen :)
http://www.php.net/manual/en/function.preg-match-all.php
<?php
$search = 'ord1 ord2 "ord3 ord4"';
$pattern = '/([a-zA-Z0-9]+)|"([a-zA-Z0-9 ]+)"/';
preg_match_all($pattern, $search, $matches);
print '<pre>';
print_r($matches);
print '</pre>';
?>
Hyggehej
/Thomas