Moro!
Mulla olisi esim. tämmöinen merkkijono:
matti "lahjakas urheilija" hiihto lumi
Haluaisin saada sen yhdellä preg_splitillä jaettua tällä tavalla:
matti
lahjakas urheilija
hiihto
lumi
Nämä " -merkit pitäisi ottaa huomioon ja niiden välissä olevia sanoja pitäisi käsitellä yhtenä merkkijonona. Tarvitsen hakusysteemin tietokantaa varten mutta en ole onnistunut hommassa preg_splitin kanssa.
Tällainen jako ei taida onnistua kovin helposti preg_splitin avulla. Minä varmaan tyytyisin omatekoiseen funktioon, jonka voi tehdä esim. seuraavasti:
<?php
function jako1($teksti) {
$lainaus = false;
$sana = '';
for ($i = 0; $i < strlen($teksti); $i++) {
$merkki = $teksti[$i];
if ($merkki == ' ') {
if (!$lainaus) {
$sanat[] = $sana;
$sana = '';
} else {
$sana .= $merkki;
}
} elseif ($merkki == '"') {
$lainaus = !$lainaus;
} else {
$sana .= $merkki;
}
}
if (strlen($sana) > 0) {
$sanat[] = $sana;
}
return $sanat;
}
$teksti = 'matti "lahjakas urheilija" hiihto lumi';
print_r(jako1($teksti));
?>Ok, kiitos tiedosta. Uskon kuitenkin että sen voisi preg_splitillä jos sen täysin hallitsisi.
Pitäisi varmaan preg_splitillä ensin napata lainausmerkkien sisällöt ja splitillä loput.
Siis preg_splitissä pitää ilmoittaa, mihin säännölliseen lausekkeeseen jakokohta sopii. Mutta minä en keksi, mitä eroa preg_splitin kannalta on välilyönneissä kohdissa "lahjakas urheilija" ja "hiihto lumi". Ensimmäinen välilyönti kuuluisi säilyttää, toisen kohdalta taas olisi jaettava.
Aihe on jo aika vanha, joten et voi enää vastata siihen.