Kuinkas saisin korvattua tekstistä ääkköset aakkosiksi, väilyönnit alaviivoiksi sekä isot kirjaimet pieniksi?
Eli esimerkiksi "Ensimmäinen testi" tallentuisi kantaan muotoon "ensimmainen_testi"
Tällä hetkellä tekstiä käsitteellään vain mysql_real_escape_string-funktiolla, joka on tietysti tässä tapauksessa täysin vääri.
$teksti = mysql_real_escape_string($_POST["teksti"], $yhteys);
Mikähän on mysql tietokannan charset?
Ite laittaisin korvattavat ja korvaavat merkit taulukkomuuttujiin ja sen jälkeen yksinkertaisesti str_replace():lla. Jos haluaa vielä varmistaa, että merkkijonossa ei ole tuntemattomia merkkejä, niin tuon jälkeen voisi ajaa merkkijonon säännöllisen lausekkeen läpi tyyliin preg_replace('/[^0-9a-z]/i', '', $str);
.
Edit: Niin jaa tässä vissiin haluttiin tehdä tämä tietokannan puolella(?). No, itse näkisin kuitenkin järkevämpänä tehdä se PHP:n puolella.
JTS kirjoitti:
Mikähän on mysql tietokannan charset?
UTF-8 Unicode (utf8)
ajv kirjoitti:
Ite laittaisin korvattavat ja korvaavat merkit taulukkomuuttujiin ja sen jälkeen yksinkertaisesti str_replace():lla. Jos haluaa vielä varmistaa, että merkkijonossa ei ole tuntemattomia merkkejä, niin tuon jälkeen voisi ajaa merkkijonon säännöllisen lausekkeen läpi tyyliin
preg_replace('/[^0-9a-z]/i', '', $str);
.Edit: Niin jaa tässä vissiin haluttiin tehdä tämä tietokannan puolella(?). No, itse näkisin kuitenkin järkevämpänä tehdä se PHP:n puolella.
Yritin ratkaista ongelmaani heikoin tuloksin. Mikäköhän ratkaisussani oikein mättää?
$teksti = strtolower($_POST["teksti"]); $teksti = str_replace("å", "a", $_POST["teksti"]); $teksti = str_replace("ä", "a", $_POST["teksti"]); $teksti = str_replace("ö", "o", $_POST["teksti"]); $teksti = str_replace(" ", "_", $_POST["teksti"]); $teksti = mysql_real_escape_string($_POST["teksti"], $yhteys);
Muutokset eivät jää voimaan, koska käytät aina seuraavassa funktiossa alkuperäistä merkkijonoa $_POST["teksti"].
Se että syötät funktioille joka kerta tuon $_POST['teksti']
, vaikka pitäisi käyttää tuota $teksti-muuttujaa.
E: hidas. Tässä kuitenkin vielä esimerkki, jonka ehdin tossa jo vääntää:
<?php $korvattavat = array('å', 'ä', 'ö', ' '); $korvaajat = array('a', 'a', 'o', '_'); $teksti = strtolower($_POST["teksti"]); $teksti = str_replace($korvattavat, $korvaajat, $teksti); $teksti = mysql_real_escape_string($teksti, $yhteys); ?>
ajv kirjoitti:
Se että syötät funktioille joka kerta tuon
$_POST['teksti']
, vaikka pitäisi käyttää tuota $teksti-muuttujaa.E: hidas. Tässä kuitenkin vielä esimerkki, jonka ehdin tossa jo vääntää:
Kiitos, tämä näyttäisi toimivan.
Aihe on jo aika vanha, joten et voi enää vastata siihen.