Avatar billede oomalkeoo Nybegynder
02. maj 2008 - 17:51 Der er 13 kommentarer og
2 løsninger

indsætte komma i streng?

Hej,

Har siddet og bøvlet med at finde en måde jeg kan få et komma ind i min streng, men har ikke helt styr på hvordan jeg kan gøre det :/ Altså min streng er som sådan "900", "1000" eller "1030" .. så vil jeg have et komma ind efter det to sidste tal fra højre .. altså så det bliver til 9:00, 10:00, 10:30 osv.. Har en ide om hvad jeg skal bruge, men har stadig ikke været i stand til at få det til at virke, legede med strlen og substr hmm, måske nogle kan hjælpe mig?
Avatar billede oomalkeoo Nybegynder
02. maj 2008 - 18:01 #1
glemte forresten lige at høre om det er muligt at bytte lidt rundt på dette "2008-04-28" så det bliver til 28/4 isteder.. så formatet er d/m .. men desværre er min input som her 2008-04-28 ..
Avatar billede w13 Novice
02. maj 2008 - 18:10 #2
Et komma eller et kolon??
Avatar billede virtual1ty Nybegynder
02. maj 2008 - 18:14 #3
Hvis din dato (2008-04-28) er gemt i en string, kan du gøre således:

$dato = "2008-04-28";
$dato = explode("-", $dato);
$dato = $dato['2'] . "/" . $dato['1'];

// nedenstående skulle gerne outputte "28/4"
echo $dato;

Jeg har ikke testet det, men det burde virke.

Jeg er lige ved at kigge PHP.net igennem efter en funktion til at indsætte strenge i en allerede eksisterende streng (så vi kan få løst dit første problem).
Avatar billede jakobdo Ekspert
02. maj 2008 - 18:20 #4
Måske det kan laves smartere, men en preg_replace kan lave 900, 1000, 1030 om til det du ønsker.

$output = preg_replace('/(\d{1,2})(\d{2})/s', '$1:$2', $input);
Avatar billede jakobdo Ekspert
02. maj 2008 - 18:22 #5
Og denne klarer din dato:

$output = preg_replace('/(\d{4})-(\d{2})-(\d{2})/', '$3/$2-$1', $input);

PS: I min sidste preg_replace kan du godt fjerne s efter /
Avatar billede oomalkeoo Nybegynder
02. maj 2008 - 18:26 #6
jakobdo;

Vil det være muligt at lave så 900 bare bliver til 9 .. og så 1030 bliver til 10:30 og så 1000 bliver til 10 .. hvis du forstår?

virtual1ty; works like a charm, tak, du må godt smide svar :)
Avatar billede oomalkeoo Nybegynder
02. maj 2008 - 18:27 #7
ah, også smart måde der! Napper nok den istedet ;)
Avatar billede virtual1ty Nybegynder
02. maj 2008 - 18:36 #8
Her er et svar, i tilfælde af du vælger mit. :)
Avatar billede oomalkeoo Nybegynder
02. maj 2008 - 18:42 #9
jacobdo: eller det var lidt forkert.. 900 => 9 .. 1000 => 10 .. 1030 => 10:3 .. sådan.. mhh.. kan det overhovedet lade sig at gøre?
Avatar billede jakobdo Ekspert
02. maj 2008 - 19:07 #10
Noget i denne stil så:

<?php
//http://www.eksperten.dk/spm/830031

function formatTimes($matches)
{
    $output = '';
  if($matches[2] == '00'){
      $output = $matches[1] . ' ..';
  }elseif(preg_match('/(\d)0/', $matches[2], $newMatch)){
      $output = $matches[1] . ':' . $newMatch[1] . ' ..';
  }else{
      $output = $matches[1] . ':' . $matches[2];
  }
  return $output;
}

$input = '1030';

$output = preg_replace_callback(
    "/(\d{1,2})(\d{2})/",
    "formatTimes",
    $input);

echo $output;
?>
Avatar billede oomalkeoo Nybegynder
02. maj 2008 - 19:23 #11
Det er perfekt, endnu engang tak jacob! laver du også svar?
Avatar billede jakobdo Ekspert
02. maj 2008 - 19:29 #12
Svar
Avatar billede oomalkeoo Nybegynder
02. maj 2008 - 19:38 #13
jacobdo; kan du lave en lille rettelse i det sidste script? så den kan tage at lave 0030 til 0,3
Avatar billede jakobdo Ekspert
02. maj 2008 - 19:49 #14
Det kommer efter jeg lige har spist.
Så udtænker jeg en smartere løsning! :o)
Avatar billede jakobdo Ekspert
02. maj 2008 - 20:42 #15
Denne her måske:

<?php
//http://www.eksperten.dk/spm/830031

function formatTimes($matches)
{
    $output = '';
    //FØRSTE SEKTION
    if(preg_match('/0(\d)/', $matches[1], $newMatch)){
        $output .= $newMatch[1];
    }else{
        $output .= $matches[1];
    }
   
    //MIDTER SEKTION
    $output .= ':';
   
    //SIDSTE SEKTION
  if($matches[2] == '00'){
      $output .= ' ..';
  }elseif(preg_match('/(\d)0/', $matches[2], $newMatch)){
      $output .= $newMatch[1] . ' ..';
  }else{
      $output .= $matches[2];
  }
  return $output;
}

$input = '0030';

$output = preg_replace_callback(
    "/(\d{1,2})(\d{2})/",
    "formatTimes",
    $input);

echo $output;
?>
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