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)?
Annonceindlæg fra Genetec
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! :)
08. februar 2005 - 18:28
#2
hovsa 2 sek
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; } ?>
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
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
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)
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');
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]);
Slettet bruger
08. februar 2005 - 21:21
#9
hvis du laver et mellemrum mellem tallet og ext kan du jo bare lave en explode
08. februar 2005 - 22:39
#10
Måske sådan her: $ext = end(split('[0-9]', $str)); $val = str_replace($ext, "", $str);
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.
09. februar 2005 - 13:03
#12
begge svar virker, så jeg deler point. Har dog valgt at anvende sandbox's forslag :)
Vi tilbyder markedets bedste kurser inden for webudvikling