Elikkä tahoisin lomakkeelta lähetetystä tekstistä kaikki muut merkit pois paitsi kirjaimet a-ö, A-Ö ja numero 0-9.
Miten tämä onnistuisi helpoiten?
Lisäksi saako lomakkeen tekstin tyypiksi määritettyä pelkät numerot, jotta siihen ei saisi kirjoitetttua kirjaimia ollenkaan?
Merkkien poistaminen onnistuu vaikkapa laatimalla listan kelvollisista merkeistä ja hyväksymällä ainoastaan ne uuteen merkkijonoon. Tässä tulee esimerkki:
<?php function poista_merkit($teksti) { // merkit, joita ei poisteta $kelpaavat = "abcdefghijklmnopqrstuvwxyzåäö" . "ABCDEFGHIJKLMNOPQRSTUVWXYZÅÄÖ" . "0123456789"; // käydään läpi koko merkkijono ja muodostetaan uusi for ($i = 0; $i < strlen($teksti); $i++) { if (strpos($kelpaavat, $teksti[$i]) !== false) { $uusi .= $teksti[$i]; } } return $uusi; } $teksti = "Toimiiko funktio?"; echo poista_merkit($teksti); // tulostus "Toimiikofunktio" ?>
Ja jotta funktio olisi monikäyttöisempi, poistettavat merkit voisi antaa parametrina tyyliin
<?php function poista_merkit($str, $arr) { $uusi = ''; for ($i = 0; $i < strlen($teksti); $i++) { if (!in_array($str{$i}, $arr)) $uusi .= $str{$i}; } return $uusi; } // nyt voit käyttää samaa funktiota poistamaan eri merkkejä echo poista_merkit("Poista tästä välit", array(" ")); // "Poistatästävälit" echo poista_merkit("Poista!... tästä!... pisteet!... ja huutomerkit!", array("...", "!"))); // "Poista tästä pisteet ja huutomerkit" ?>
Kiitti, tein siihen jo sellatteen mil voi valita et mitä se poistaa..esim. jättää vaan jollain arvolla pelkät numerot.
preg_replacella:
<?php $teksti = "toimiiko funktio?"; echo preg_replace('#[^a-zA-Z0-9äöåÄÖÅ]#', '', $teksti); ?>
php totuus: lyhyt = nopea
Tai
<?php function poista_merkit($str, $arr) { return $str_replace($arr, "", $str); } // funktio ?>
phadej kirjoitti:
php totuus: lyhyt = nopea
Tämähän ei ole universaali totuus edes PHP:n alueella, mutta tässä tilanteessa kyllä näin on. Ja itsellä jäi kummittelemaan tuonna $teksti, siinä pitäisi olla $str.
Aihe on jo aika vanha, joten et voi enää vastata siihen.