Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: preg_splittiä keywordeille

masse [04.01.2006 11:18:11]

#

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.

Antti Laaksonen [04.01.2006 12:30:46]

#

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));

?>

masse [04.01.2006 12:32:45]

#

Ok, kiitos tiedosta. Uskon kuitenkin että sen voisi preg_splitillä jos sen täysin hallitsisi.

LazyJones [04.01.2006 12:42:00]

#

Pitäisi varmaan preg_splitillä ensin napata lainausmerkkien sisällöt ja splitillä loput.

Antti Laaksonen [04.01.2006 13:15:07]

#

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.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta