probeer eens:
$string = 'tekst, tekst, tekst, \"tekst, tekst\", tekst, tekst';
mn browser deed ff wazig dus ik kon de pagina niet bekijken, maar mss is het wat:
http://nl2.php.net/addslashes
Link gekopieerd
@flip
hij wilt ze wel behouden.
je kan dat deel ook weer exploden, maar dan krijg je wel een lange oplossing. Met een regex gaat t veel makkelijker.
Link gekopieerd
Ik kom een aardig eind, kijk maar:
<?php
$string = '"tekst, tekst, tekst", tekst, tekst, tekst, "tekst, tekst", tekst, tekst, "tekst, tekst"';
preg_match_all('/([^,"\ ]+)*("[^"]+")*/', $string, $array);
print '<pre>' . print_r($array, true) . '</pre>';
?>
output =
Array
(
[0] => Array
(
[0] =>
[1] => "tekst, tekst, tekst"
[2] =>
[3] =>
[4] => tekst
[5] =>
[6] =>
[7] => tekst
[8] =>
[9] =>
[10] => tekst
[11] =>
[12] =>
[13] =>
[14] => "tekst, tekst"
[15] =>
[16] =>
[17] => tekst
[18] =>
[19] =>
[20] => tekst
[21] =>
[22] =>
[23] =>
[24] => "tekst, tekst"
[25] =>
)
Er komen dus alleen veel lege dingen tussen maar die kun je zo filteren, of je moet de reg-ex effe verbeteren.
Link gekopieerd
Daar kan ik wel wat mee denk ik !
Tnx !!
Link gekopieerd
En om precies te krijgen wat jij wil kun je dit doen:
<?php
$string = '"tekst, tekst, tekst", tekst, tekst, tekst, "tekst, tekst", tekst, tekst, "tekst, tekst"';
preg_match_all('/([^,"\ ]+)*("[^"]+")*/', $string, $array);
foreach ($array[0] as $key => &$value) {
$value = trim($value);
if (empty($value)) {
unset($array[0][$key]);
}
}
print '<pre>' . print_r($array[0], true) . '</pre>';
?>
Output=
Array
(
[0] => "tekst, tekst, tekst"
[3] => tekst
[6] => tekst
[9] => tekst
[12] => "tekst, tekst"
[15] => tekst
[18] => tekst
[21] => "tekst, tekst"
)
Je kunt ook nog effe de keys resetten natuurlijk.
Link gekopieerd
Dat is een knap stukje reguliere expressies !!
Het enige wat ik me afvraag is waar die "&" voor dient die je voor "$value" in de foreach loop hebt gezet.
Link gekopieerd
Dat is de reference operator. Daarmee zorgt PHPerik er voor dat de oorspronkelijke arrayelementen ook daadwerkelijk gewijzigd worden. Als je dat niet op die manier doet, werk je in een kopie van het origineel.
Link gekopieerd
aha oke, nogmaals bedankt voor jullie hulp, nu kan ik eindelijk verder !
Link gekopieerd