Gå til innhold

Lage variabel av en del av en tekst :-?


Anbefalte innlegg

Videoannonse
Annonse

function substr(); og starte tellingen bakfra...

 

kan brukes, dersom alle linjene har samme format, har du derimot forskjell på måten tlf-nr blir skrevet... ja da veit ikke jeg...

 

$sist = substr("<<36<<Mikael<>Berg<>[email protected]<>9366XXXX<>Mikka<>1988<>Røros<>Berg<>36 0 32347<<", -12, 10);

// -12: vi teller bakfra..,10: så mange tegn skal vi ha med for å slippe de siste to <<



echo "$sist";

// teste utfall...  har du sett, det kan funke...

 

 

[tanke]

du kan jo skrive deg en function som lagrer tlf.nr i fila i riktig format..

function nrformat(nummer)

{

$nummer = "ta bort country-prefix(+47)";

$nummer = "ta bort alle mellomrom";

$nummer = "legg til mellomrom på riktig plass"

}

[/tanke]

 

dette dersom du får nummerne inn via et eller annen skjema, fylt ut av mennesker...

Lenke til kommentar

Ok, takk takk! :-)

 

 

 

 

Men hvordan får jeg til å hente dette fra fila?

 

Det jeg aller helst skulle hatt er at man henter ut det siste nummeret (her 36 0 32347) fra den linja der det første nummeret er $plass, i dette tilfellet "36". Er dette vanskelig å lage?

Lenke til kommentar

for å hjelpe deg litt i gang:

 


  function fnc_line($file)

  {

        if($fp = fopen($file, 'r')) {

          $array = @file($file);

           foreach($array as $key){ /*se under fnc*/

              return $key;

           } 

       }

        else{

          return FALSE;

        }

  }



/*vet ikke om foreach egentlig er det smarteste å bruke der*/



   $w = fnc_line($file);

   $w = trim($w);



   $start = "<>";

   $end = "<<";

   $strrchrstart = strrchr($w, "$start");

   $strrchrend = strrchr($w, "$end");



 

så må du bare finne en måte å trekke ut det som står mellom $strrchrstart og $strrchrend... <-- det er jeg ganske usikker på hvordan man gjør...

Lenke til kommentar
Ok, nå har jeg fått det til ganske bra, tror jeg.

 

 

 

Men problemet er at scriptet hele tiden tar ut den koden som ligger på den øverste linja, ikke den der det første tallet er $pl. Noen som vet hvordan jeg kan få til det?

 

vet ihvertfall det at når jeg lager random quote o.l. script legger jeg hele fila i et array og bruker en rand function til å trekke ut linjenummer...

 

med functionen jeg skrev over her legges fila i et array, så da må du først søke etter det nr du ville ha tak i så sjekke hvilket # linja det ligger på har så trekke ut den... <-- vil jeg tro ihvertfall...

Lenke til kommentar
Ok, nå har jeg fått det til ganske bra, tror jeg.

 

 

 

Men problemet er at scriptet hele tiden tar ut den koden som ligger på den øverste linja, ikke den der det første tallet er $pl. Noen som vet hvordan jeg kan få til det?

 

vet ihvertfall det at når jeg lager random quote o.l. script legger jeg hele fila i et array og bruker en rand function til å trekke ut linjenummer...

 

med functionen jeg skrev over her legges fila i et array, så da må du først søke etter det nr du ville ha tak i så sjekke hvilket # linja det ligger på har så trekke ut den... <-- vil jeg tro ihvertfall...

 

*Bump* :smile:

 

 

Ok, skjønte ikke så mye av det. Er ikke noe rå på php, kan bare det aller aller mest grunnleggende... :oops:

 

 

Er det noen som kan forklare dette litt nærmere, eventuelt komme med en ferdig løsning til dette?

 

Det jeg trenger er at jeg skal gjøre noe med den linja som starter med <<$pl (for eksempel <<36). Hvis dette for eksempel kunne vært en if-greie slik som dette:

if (linje == 36) {

blah blah, slette og greier

}

<- Bare for å illustrere. Det med slettinga har jeg fått til. Jeg mangler bare at det skal skje med den linja, og ikke med den linja som ligger øverst.

Lenke til kommentar

Noe sånt du mente?

$finn = "<<".$pl;

foreach(file("filen.txt") as $f){

  if(substr($f, strlen($finn ))==$finn){

       //Slett denne linja!  

  }

}

 

Komplett eksempel:

 

$finn = "<<".$pl;

$filarr = file("filen.txt");

$fp = fopen("filen.txt",'w');

foreach(file($filarr as $f){

  if(substr($f, strlen($finn ))!=$finn){

       fwrite($fp, $f);

  }

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...