Avatar billede kgp43 Nybegynder
08. februar 2005 - 18:11 Der er 10 kommentarer og
2 løsninger

Split variabel

Hejsa,

Jeg har en variable der består af nogle tal efterfulgt at "px" eller "%" (ex: "700px" eller "90%").

Er det muligt at få denne variable opdelt i to (ex $value og $ext)?
Avatar billede elskermad.dk Nybegynder
08. februar 2005 - 18:26 #1
<?

foreach($variable AS $key => $value) {
  $erstat = array(0,1,2,3,4,5,6,7,8,9);
  $med = array("","","","","","","","","","");

  $value = str_replace($erstat,$med,$value);

  if ($value == "px") $px[] = $value;
  else $pro[] = $value;
}

?>

utestet, og kan sikkert laves smartere! :)
Avatar billede elskermad.dk Nybegynder
08. februar 2005 - 18:28 #2
hovsa 2 sek
Avatar billede elskermad.dk Nybegynder
08. februar 2005 - 18:29 #3
<?

foreach($variable AS $key => $value) {
  $erstat = array(0,1,2,3,4,5,6,7,8,9);
  $med = array("","","","","","","","","","");

  $uden = str_replace($erstat,$med,$value);

  if ($uden == "px") $px[] = $value;
  else $pro[] = $value;
}

?>
Avatar billede kgp43 Nybegynder
08. februar 2005 - 18:34 #4
Du'er din kode også med en variable som 90%? Så vidt jeg kan se, så virker den kun ved "px".

Kan den laves uden brug af foreach
Avatar billede elskermad.dk Nybegynder
08. februar 2005 - 19:25 #5
hvad er der galt med foreach, og elsen tager jo de tal der er skrevet med % og ligger i $pro
Avatar billede kgp43 Nybegynder
08. februar 2005 - 19:37 #6
er det ikke muligt at få to variabler med tallene i én variabel og px/% i en anden?

Ex.

$var = 120px
$value = 120
$ext = px

Måske skal jeg over i noget ala:

$value = str_replace("px,%","",$var);
$ext = str_replace("alle-tal","",$var);
(ved ikke om det vil virke, eller om der findes en smartere måde)
Avatar billede kgp43 Nybegynder
08. februar 2005 - 19:50 #7
Har prøvet følgende, men det virker ikke

$table_width_value = str_replace('px,%','','$table_width');
$table_width_ext = str_replace('[^0-9]','','$table_width');
Avatar billede kgp43 Nybegynder
08. februar 2005 - 20:14 #8
Den her virker, men der må være en nemmere løsning


$table_width_value = str_replace("px","",$table_width);
$table_width_value = str_replace("%","",$table_width_value);
$erstat = array(0,1,2,3,4,5,6,7,8,9);
$med = array("","","","","","","","","","");
$table_width_ext = str_replace($erstat, $med, $sql_fetch[table_width]);
Avatar billede Slettet bruger
08. februar 2005 - 21:21 #9
hvis du laver et mellemrum mellem tallet og ext kan du jo bare lave en explode
Avatar billede hmortensen Nybegynder
08. februar 2005 - 22:39 #10
Måske sådan her:
$ext = end(split('[0-9]', $str));
$val = str_replace($ext, "", $str);
Avatar billede Slettet bruger
09. februar 2005 - 02:44 #11
function minsplitter($var){
  $match=array();
  if(1==preg_match('^(\d+)(\D+)$',$var,$match)){
    return $match;
  } else {
    return FALSE;
  }
}

$svar=minsplitter("120px");
if($svar===false){
  echo "Forkert værdi.";
} else {
  echo "Jeg har splittet {$svar[0]} op i {$svar[1]} og {$svar[2]}";
}

Du kan naturligvis lade være med at teste om den matcher korrekt, hvis du har 100% tillid til input, men det er altid en god ide at kontrollere den slags alligevel. Shit happens.
Avatar billede kgp43 Nybegynder
09. februar 2005 - 13:03 #12
begge svar virker, så jeg deler point. Har dog valgt at anvende sandbox's forslag :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester