Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Haku ja käyttäminen

Sivun loppuun

Grimmi [04.01.2008 15:17:16]

#

Otsikko ehkä huono, mutta kuitenkin.

Pitäis saada tehtyä semmoinen homma että kun, joku kirjoittaa kommenttia ja haluaa vaikka muuntaa xx celciusta xx fahrenheittiin käyttäen tälläistä menetelmää (esimerkki post):

"Vesi kiehuu 100c asteessa (fahrenheitteina se on convert(1,100))"

Ja tulostus olisi:

"Vesi kiehuu 100c asteessa (fahrenheitteina se on 212f)"

Miten tommonen onnistuisi?

Hakoulinen [04.01.2008 17:13:42]

#

function fahr($f) {

$f = $f * $jtn;

return $f;

}

En tiä miten fahrenheit lasketaan.

Grimmi [04.01.2008 18:40:27]

#

Taisit missata koko homman pointin, esim. tämäki ku kirjoitan, ja haluaisin textfield inputissa olevan komennon tekemään asioita. Miten saisin sen poimittua tekstin seasta.

Pitäiskö käyttää eregiä?

Teuro [04.01.2008 20:37:28]

#

Haluat siis tunnistaa tekstin joukosta jonkun luvun, joka muistuttaa lämpötilaa? Helpoiten onnistunee vaikkapa perl-yhteensopivilla preg_replace functiolla. Laitetaan vaikkapa:

$teksti = "13 celsiusta 13*C = fahrenheitia";

Tästä tunnistetaan 13*C säännöllisellä lausekkeella ja muunnetaan se fahrenheiteiksi.

<?php
function Muunna($c){
  $f = (9/5)*$c+32;
return $f;
}

$teksti = "13 celsiusta = 13*C fahrenheitia";
$teksti = preg_replace("/(\\b[0-9]*\\b)\\*C/e", "Muunna(\\1)", $teksti);

echo $teksti;
?>

Grimmi [05.01.2008 04:32:23]

#

Hmm, toi näyttää hyvältä. Mutta itellä olisi suunitelmana että ois tämmönen toi muuntaja funktio:

<?php

function muuntaja($type, $value) {

switch($type)
{
   case 1: // C to F
   $sum = (9/5)*$value+32;
   break;

   case 2: // F to C
   $sum = ($value-32)/(9/5)
   break;
   // ja lisää kaavoja.....

  return $sum;
} } ?>

Menisikö se tohon preg_replace kohtaan jotenkin tälläin....

<?php $teksti = preg_replace("convert(/([0-9]+)\,/([0-9]+)/e)", "muuntaja(\\0,\\1)", $teksti); ?>

EDIT:

Jees, elikkä muuntamalla tota replace lausetta sain toimimaan, tämmöseksi se piti muuttaa:

<?php preg_replace("/convert\(([0-9]),([0-9])\)/e", "converter(\\1,\\2)", $teksti); ?>

Teuro [05.01.2008 10:18:20]

#

Tuossa vaaditaan käyttäjältä function tunteminen ennalta. Jokaisen joka kirjoittaa sivullesi tulee tietää, että 1 tarkoittaa muunnosta C -> F jne...

Parempi olisi ehkä tehdä looginen muunnos jotenkin näin:

<?php
function Muunna($luku, $tyyppi){
  $muunnos = 0;

  switch($tyyppi){
    case "CF":
      $muunnos = (9 / 5) * $luku + 32;
      break;

    case "FC":
      $muunnos = (5 / 9) * ($luku - 32);
      break;
  }
  return round($muunnos, 2);
}

$luku = 55;

$teksti = "12 astetta Celsiusta = 12*CF Fahrenheitia <br /> 12 astetta Fahrenheitia = 12*FC Celsiusta";

$teksti = preg_replace("/(\\b[0-9]*\\b)\\*([A-Z]+)/e", "Muunna(\\1, \\2)", $teksti);

echo"<br /> $teksti";

?>

Kokeilin sellaistakin, että laittaisi 12*C -> F , mutta tuo ei jostain syystä kelvannut PHP:e. Tuolla lailla se olisi mielestäni mukava ainakin käyttää. Saisikohan tuon jotenkin toimimaan. Minulla oli silloin näin tuo tunnistus.

<?php
$teksti = "12 astetta Celsiusta = 12*C -> F Fahrenheitia <br /> 12 astetta Fahrenheitia = 12*F -> C Celsiusta";

$teksti = preg_replace("/(\\b[0-9]*\\b)\\*([A-Z]*\\s\\-\\>\\s[A-Z]*)/e", "Muunna(\\1, \\2)", $teksti);

//Antaa seuraavat ilmoitukset:
Parse error: parse error in h:\program files\easyphp1-8\www\test.php(21) : regexp code on line 1

Fatal error: Failed evaluating code: Muunna(12, C -> F) in h:\program files\easyphp1-8\www\test.php on line 21
?>

Eli jokin kirjoitusvirhe ja sen johdosta functiota Muunna ei voi evauoida?

Niko [05.01.2008 14:02:10]

#

Teksti luutavasti pitää laittaa hipsuihin tai lainausmerkkeihin.

Grimmi [06.01.2008 06:30:42]

#

Teuro kirjoitti:

Tuossa vaaditaan käyttäjältä function tunteminen ennalta. Jokaisen joka kirjoittaa sivullesi tulee tietää, että 1 tarkoittaa muunnosta C -> F jne...

Se on vähän sama kuin täällä, kaikkien pitää tietää että koodiphp mahdollistaa php koodin oikeanlaisen tulkkauksen :) Elikkä kyllä ohjeet löytyy kun kirjoittaa, http://gurnarok.com/conver.php

Teuro [06.01.2008 11:03:27]

#

Niko kirjoitti:

Teksti luutavasti pitää laittaa hipsuihin tai lainausmerkkeihin.

Tekstihän on lainausmerkeissä?


Sivun alkuun

Vastaus

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

Tietoa sivustosta