Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: MySQL: Merkkien korvaaminen

Sivun loppuun

OskariB [07.09.2008 00:06:37]

#

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

kayttaja-2791 [07.09.2008 00:18:20]

#

Mikähän on mysql tietokannan charset?

ajv [07.09.2008 00:21:49]

#

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.

OskariB [07.09.2008 00:21:56]

#

JTS kirjoitti:

Mikähän on mysql tietokannan charset?

UTF-8 Unicode (utf8)

OskariB [07.09.2008 12:13:14]

#

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

Antti Laaksonen [07.09.2008 12:15:20]

#

Muutokset eivät jää voimaan, koska käytät aina seuraavassa funktiossa alkuperäistä merkkijonoa $_POST["teksti"].

ajv [07.09.2008 12:17:10]

#

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

OskariB [07.09.2008 13:04:59]

#

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.


Sivun alkuun

Vastaus

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

Tietoa sivustosta