Avatar billede zorkmontana Nybegynder
07. maj 2006 - 18:44 Der er 8 kommentarer og
2 løsninger

Splitte en streng

hej

hvordan splitter jeg en streng der ligner denne uden at skade teksten indenfor " "?

NOGET, "NOGET MERE, LIGE HER", MÅSKE ER DER NOGET HER!
Avatar billede olebole Juniormester
07. maj 2006 - 18:50 #1
<ole>

- og en forståelig forklaring?

/mvh
</bole>
Avatar billede zorkmontana Nybegynder
07. maj 2006 - 18:58 #2
jeg skal bruge det til en hjemmeside, hvor meget af designets opsætning bliver hentet fra en fil, filens type ligner til forveksling CSV MEN den skal ikke håndteres som en CSV men som en alm txt fil, da nogle af tingene ikke er som CSV filen.
men jeg ved ikke hvordan jeg skal splitte linierne!
som sagt ser linierne sådan ud:

NOGET, "NOGET MERE, LIGE HER", MÅSKE ER DER NOGET HER!

hvor nogle af tingene har " udenom ligesom i CSV men hvodan undgår jeg at splitte kommaet indenfor " ?
håber det var bedre
Avatar billede olebole Juniormester
07. maj 2006 - 19:11 #3
- hvorfor ikke indrette filen, så den bliver hensigtsmæssig at behandle?
Avatar billede hmortensen Nybegynder
07. maj 2006 - 19:22 #4
En mulig løsning (kan sikkert gøres pænere):

funtion MySplit($str)
{
  $arr = explode(",", $str);

  $result = array();

  $append = false;
  $stringBuilder = "";

  foreach ($arr as $val)
  {
    $val = trim($val);
    $pos = strpos($val, '"');
    if ($append)
    {
      if ($pos === false)
      {
        $stringBuilder .= $val.', ';
      }
      else
      {
        $stringBuilder .= $val;
        $result[] = $stringBuilder;
        $append = false;
      }
    }
    else
    {
      if ($pos === false)
      {
        $result[] = $val;
      }
      else
      {
        $stringBuilder = $val.', ';
        $append = true;
      }
    }
  }

  return $result;
}
Avatar billede steven_ Nybegynder
07. maj 2006 - 19:57 #5
Jeg blev ikke helt færdig, men gik igang med nedenstående for ikke så længe siden.

function cutString( $string = "Din tekst, som er kææmpe lang!!", $maxLength = 20 )
{
    if( strlen( $string ) > $maxLength )
    {
        preg_match( "%(.{1," . $maxLength . "})%",
                    $string,
                    $string );
        echo print_r( $string,
                      true );
        return $string[1] . " ...";
    }
    else
    {
        return $string;
    }
}
Avatar billede zorkmontana Nybegynder
07. maj 2006 - 19:58 #6
olebole -> hvordan ville du da ellers gøre? hvis jeg så går ud fra det er en CSV fil, mit system skal hente nogle linier og så skal den hente noget andet.
commandoen kan være "breadcrumbs" og det jeg så skal have ud er "Table is clean".
hvodan kan jeg det? ville være glad hvis du lige kunne gennemskue det, kan nemlig ikke selv ;)

hmortensen -> er lige igang med at kigge på det
Avatar billede hmortensen Nybegynder
08. maj 2006 - 15:08 #7
Fik du det til at virke?
Avatar billede zorkmontana Nybegynder
08. maj 2006 - 15:41 #8
yes.. har faktisk lige fået det til at virke...
jeg har fjernet en helt del kode, og lavede 2 filer istedet for en den ene er en csv og den anden bliver håndteret af noget af din kode hmortensen..
så mangler jeg bare at give nogle point! ;)
Avatar billede hmortensen Nybegynder
08. maj 2006 - 15:45 #9
Jeg kan ikke umiddelbart se noget af koden som kan undværet i dit eksempel, men hvad, hvis bare det virker ;)
Avatar billede zorkmontana Nybegynder
29. maj 2006 - 20:56 #10
Sorry for mit langsomme svar men der var meget andet som også skulle håndteres hvor csv ikke passede ind, så nu splitter jeg den 2 gange og operere den på 2 måder og det virker!

Lukker
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