Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Ylimääräisten merkkien poistaminen

Axuu [23.11.2005 15:11:29]

#

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?

Antti Laaksonen [23.11.2005 15:23:34]

#

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"

?>

tsuriga [23.11.2005 16:54:50]

#

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"

?>

Axuu [23.11.2005 18:00:38]

#

Kiitti, tein siihen jo sellatteen mil voi valita et mitä se poistaa..esim. jättää vaan jollain arvolla pelkät numerot.

phadej [23.11.2005 18:19:11]

#

preg_replacella:

<?php
$teksti = "toimiiko funktio?";
echo preg_replace('#[^a-zA-Z0-9äöåÄÖÅ]#', '', $teksti);
?>

php totuus: lyhyt = nopea

Olga [23.11.2005 18:46:01]

#

Tai

<?php

function poista_merkit($str, $arr) {

    return $str_replace($arr, "", $str);

} // funktio

?>

tsuriga [23.11.2005 19:01:05]

#

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.

Vastaus

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

Tietoa sivustosta