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.