/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Læse fra bestemt sted i fil
Fra : Alexander


Dato : 23-01-02 20:48

Jeg har brug for at læse et bestemt område af en fil. Dvs. at jeg
fx ønsker at starte læsning ved ordet 'abe' og stoppe læsning ved
ordet 'kamel'. Alt det mellemliggende skal derefter skrives ud.
Er der nogen der har en idé?

/Alexander

--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP ???
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

 
 
Christian Joergensen (23-01-2002)
Kommentar
Fra : Christian Joergensen


Dato : 23-01-02 20:50

Alexander <alexander.j@mail.dk> wrote:

> Jeg har brug for at læse et bestemt område af en fil. Dvs. at jeg
> fx ønsker at starte læsning ved ordet 'abe' og stoppe læsning ved
> ordet 'kamel'. Alt det mellemliggende skal derefter skrives ud.
> Er der nogen der har en idé?

Ved hjælp af strpos() finder du ud af hvor de to ord befinder sig og
klipper derefter ud.

--
Christian Jørgensen / He who can does. He who can't teaches. He who
http://www.razor.dk / can't teach builds learning systems.


Mogens Meier Christe~ (23-01-2002)
Kommentar
Fra : Mogens Meier Christe~


Dato : 23-01-02 21:04

"Christian Joergensen" <mail@phpguru.dk> wrote in message
news:1416586.nmMsMuYHn3@flaf...

> Ved hjælp af strpos() finder du ud af hvor de to ord befinder sig og
> klipper derefter ud.

Det samme kan opnås med ereg() / eregi() - hver med deres fordele og
ulemper.

--
Mvh. Mogens
www.momech.dk




Steen \(MSDesign.dk\~ (23-01-2002)
Kommentar
Fra : Steen \(MSDesign.dk\~


Dato : 23-01-02 23:24

(Pas på... newbie på vejen)

Aaarj.... fortsæt lige...
Kan i ikke lige fortælle hvordan man præcist henter noget ud fra en
tekstfil!!..?

For jeg vil godt lige finde ud af hvordan man gør...f.eks hvis...

Jeg har 2 filer... en .txt og en .php

Indholdet i .txt filen er bare
-----
Dette er en test jeg vil bare lige hive 1 ord eller 2 ud...
-----

Så vil jeg gerne hive et eller 2 ord ud af denne tekst...
Jeg skal nemlig bruge det til en formular, som sætter noget tekst ind fra 3
forskellige felter og så vil jeg hente teksten fra hver af de felter på hver
sit sted på en hjemmeside...

jeg tænkte at jeg kunne lave noget som gjorde at .txt filen så sådan her
ud...

-----
Dette er en test %¤# jeg vil bare lige %#¤ hive 1 ord eller 2 ud...
-----

og så at man kan hente INDTIL det første... "%¤#" i en tabelcelle... og det
mellem "%¤#" og "%#¤" i en anden celle... og resten i en tredie celle...

jeg ved også at man kan i ASP... men jeg ved ikke helt hvordan man får det
til at funke i PHP...

Mange tak på forhånd...

--
Steen Nielsen
http://www.msdesign.dk
Professionelt webdesign til fornuftige priser
"Mogens Meier Christensen" <mmc@nospam.dk> wrote in message
news:a2n58h$29of$1@news.cybercity.dk...
> "Christian Joergensen" <mail@phpguru.dk> wrote in message
> news:1416586.nmMsMuYHn3@flaf...
>
> > Ved hjælp af strpos() finder du ud af hvor de to ord befinder sig og
> > klipper derefter ud.
>
> Det samme kan opnås med ereg() / eregi() - hver med deres fordele og
> ulemper.
>
> --
> Mvh. Mogens
> www.momech.dk
>
>
>



Mogens Meier Christe~ (24-01-2002)
Kommentar
Fra : Mogens Meier Christe~


Dato : 24-01-02 00:36

"Steen (MSDesign.dk)" <steen@msdesign.dk> wrote in message
news:a2nd8e$2jqv$1@news.cybercity.dk...

> (Pas på... newbie på vejen)

Skal nok køre forsigtigt - sådan da! :)

> Indholdet i .txt filen er bare
> -----
> Dette er en test jeg vil bare lige hive 1 ord eller 2 ud...
> -----
>
> Så vil jeg gerne hive et eller 2 ord ud af denne tekst...
> Jeg skal nemlig bruge det til en formular, som sætter noget tekst ind fra
3
> forskellige felter og så vil jeg hente teksten fra hver af de felter på
hver
> sit sted på en hjemmeside...

Jeg har meget svært ved at forstå din forklaring (undskyld).

Er der tale om en længere tekstfil med et ukendt antal forekomster, eller
ved du der altid er en?

Er det du ønsker at få *splittet* teksten op i stumper adskildt af bestemte
ord, eller at *udtrække* de/den (en/flere?) stumper der står imellem to
adskillere?

split()/spliti() er fantastik til tekstopsplitning (duh?) mens ereg er god
til at matche ting med og også bekvem til at identificere tekst-mønstre og
dermed også til at udtrække en del af mønstret. Det sidste er dog lidt
indirekte anvendelse af funktionen, ikke helt newbie-stof! :)

I øvrigt er manualen en god ting!

* Hvis du ikke har styr på regulære udtryk
http://dk.php.net/manual/en/ref.regex.php

* split/spliti : http://dk.php.net/manual/en/function.split.php

*ereg / eregi : http://dk.php.net/manual/en/function.ereg.php

Prøv at svare på spørgsmålet for dig selv, læs på det relevante og stil så
spørgsmålet om igen-igen, så vi ved hvad du vil og hvad du kan/ikke kan! : )


--
Mvh. Mogens
www.momech.dk
"Egentlig burde danske burhøns være dyrere"



Steen \(MSDesign.dk\~ (25-01-2002)
Kommentar
Fra : Steen \(MSDesign.dk\~


Dato : 25-01-02 17:58

> Jeg har meget svært ved at forstå din forklaring (undskyld).
>
> Er der tale om en længere tekstfil med et ukendt antal forekomster, eller
> ved du der altid er en?
....
> Prøv at svare på spørgsmålet for dig selv, læs på det relevante og stil så
> spørgsmålet om igen-igen, så vi ved hvad du vil og hvad du kan/ikke kan!
: )

hehe ... dårligt formuleret??

Det jeg mener er at man skal kunne udfylde en formular med f.eks. 4 felter
hvor fordelingen ser således ud: (noget lign. en gæstebog)
1.:. Fuldt Navn
2.:. Email
3.:. Hjemmeside
4.:. Kommentar

Det jeg så vil have formularen til at spytte ud i et tekstdokument er noget
lign det her:
----------------------------------------------------------------------------
-----------
Steen Nielsen
steen@msdesign.dk
http://www.msdesign.dk
£¤#
Dette er en wollasej side med en masse seje ting på.....
desuden vil jeg have at der bliver delt nogle bajere ud til alle dem i den
her NG!!...

----------------------------------------------------------------------------
-----------

Jeg ved ikke om det stadig er for kringlet skrevet...
Men jeg fortsætter i hvert fald..

Det at der skal komme i tekstdokumentet er det indhold fra formularen...
Hvor Navn, Email og Hjemmeside skal være <input type="text"> felter.. og
kommentaren er et <textarea></textarea> felt... så der kan være ligeså mange
linier i det felt som personen synes...

NU KOMMER DET JEG IKKE FATTER!!...
-----

Hvordan henter man så de ting ind i en tabel ??...så jeg selv kan bestemme
hvor diverse ting skal være?... og at den ikke bare spytter alt indholdet ud
i et felt fordi jeg har skrevet <? include ("test.txt") ?>


jeg havde tænkt på noget lign det nedenstående...men jeg ved ikke hvordan
man skal skrive det med det rigtige...

------------------------------------
$navn = "læs fra linie 1"
$email = "læs fra linie 2"
$hp = "læs fra linie 3"
$kom = "$email = "læs fra £¤# og resten af siden"

<table>
<tr>
<td>navn: $navn</td><td>email: $email</td><td>hjemmeside: $hp</td>
<tr>
<tr>
<td>$kom</td>
<tr>
------------------------------------

Nu håber jeg det er lidt mere forståligt...

Tak på forhånd

--
Steen Nielsen
http://www.msdesign.dk
Professionelt webdesign til fornuftige priser



Ulrik Kold (25-01-2002)
Kommentar
Fra : Ulrik Kold


Dato : 25-01-02 18:16

[SNIP]

> Det jeg mener er at man skal kunne udfylde en formular med f.eks. 4 felter
> hvor fordelingen ser således ud: (noget lign. en gæstebog)
> 1.:. Fuldt Navn
> 2.:. Email
> 3.:. Hjemmeside
> 4.:. Kommentar
>
> Det jeg så vil have formularen til at spytte ud i et tekstdokument er noget
> lign det her:
> ----------------------------------------------------------------------------
> Steen Nielsen
> steen@msdesign.dk
> http://www.msdesign.dk
> £¤#
> Dette er en wollasej side med en masse seje ting på.....
> desuden vil jeg have at der bliver delt nogle bajere ud til alle dem i den
> her NG!!...
>
> ----------------------------------------------------------------------------
> -----------
>
> Jeg ved ikke om det stadig er for kringlet skrevet...
> Men jeg fortsætter i hvert fald..


Nej, jeg er helt med, det er det, jeg selv har lavet til min hjemmeside
.... (Jeg har siden fundet ud af at MySQL klart er din ven. Det andet
giver for meget besvær i længden).

>
> Det at der skal komme i tekstdokumentet er det indhold fra formularen...
> Hvor Navn, Email og Hjemmeside skal være <input type="text"> felter.. og
> kommentaren er et <textarea></textarea> felt... så der kan være ligeså mange
> linier i det felt som personen synes...
>
> NU KOMMER DET JEG IKKE FATTER!!...
> -----
>
> Hvordan henter man så de ting ind i en tabel ??...så jeg selv kan bestemme
> hvor diverse ting skal være?... og at den ikke bare spytter alt indholdet ud
> i et felt fordi jeg har skrevet <? include ("test.txt") ?>
>
>
> jeg havde tænkt på noget lign det nedenstående...men jeg ved ikke hvordan
> man skal skrive det med det rigtige...
>
> ------------------------------------
> $navn = "læs fra linie 1"
> $email = "læs fra linie 2"
> $hp = "læs fra linie 3"
> $kom = "$email = "læs fra £¤# og resten af siden"
>
> <table>
> <tr>
> <td>navn: $navn</td><td>email: $email</td><td>hjemmeside: $hp</td>
> <tr>
> <tr>
> <td>$kom</td>
> <tr>
> ------------------------------------
>
> Nu håber jeg det er lidt mere forståligt...


Jo tak, du kan se hvorfor oven over, og min hjælp nedenunder.

>
> Tak på forhånd
>
> --
> Steen Nielsen
> http://www.msdesign.dk
> Professionelt webdesign til fornuftige priser

Hvis du er 110% dødsikker på at der altid vil være et navn, en email og
en hjemmeside i de 3 første linier og derefter en kommentar i linie 4
(evt. i linie 4 og fremefter), så kan du bruge

$fileArray = file($something);

til at hente filen ind i et array (en linie for hver plads) og derefter
tilegne de enkelte pladser til dine $email, $navn, $hp og $kom variable.

Dem kan du derefter bruge som du selv har skrevet ovenfor.

Håber det hjalp?

..kold, der lige nåede den her mellem 2 mundfulde kartofler :)


Steen \(MSDesign.dk\~ (25-01-2002)
Kommentar
Fra : Steen \(MSDesign.dk\~


Dato : 25-01-02 23:40

> Nej, jeg er helt med, det er det, jeg selv har lavet til min hjemmeside
> ... (Jeg har siden fundet ud af at MySQL klart er din ven. Det andet
> giver for meget besvær i længden).

Jeg ved godt at man kan med mysql... men jeg vil gerne lære det her lidt hen
af vejen..
Desuden så har jeg et mindre problem, jeg sidder på et win32 system (WinXP)
med apache server.. og jeg har et mindre problem med at få installeret mysql
på den... uanset hvad jeg gør så laver den fejl... jeg kan ikke oprette en
mysql DB, hverken via dos eller via php... og jeg har fulgt 6 forskellige
toturials (ikke på en gang...) for at se om det var mig der var noget galt
med..


> Hvis du er 110% dødsikker på at der altid vil være et navn, en email og
> en hjemmeside i de 3 første linier og derefter en kommentar i linie 4
> (evt. i linie 4 og fremefter), så kan du bruge
>
> $fileArray = file($something);
>
> til at hente filen ind i et array (en linie for hver plads) og derefter
> tilegne de enkelte pladser til dine $email, $navn, $hp og $kom variable.
>
> Dem kan du derefter bruge som du selv har skrevet ovenfor.
>
> Håber det hjalp?

Der må jeg altså tilstå at det ikke gjorde...
For jeg er ikke altid sikker på at det netop skulle følge det mønster....
det var jo som jeg skrev kun et eks. og jeg havde også tænkt mig at det
skulle gøres på en anden måde...
Men mit udgangspunkt er at jeg gerne vil vide hvordan man får PHP til at
læse imellem 2 forskellige punkter... f.eks så kan jeg lige illustrere det
lidt anderledes nedefor...

dette er hvad der står i .txt dokumentet...

--------------------------------------------------------------------------
Steen Nielsen ¤¤ steen@msdesign.dk ¤£ http://www.msdesign.dk £¤# Dette er en
wollasej side med en masse seje ting på.....desuden vil jeg have at der
bliver delt nogle bajere ud til alle dem i den her NG!!...
--------------------------------------------------------------------------
Så skal jeg "bare" få php til at:
1 .:. Læse endtil ¤¤ (uden at skrive ¤¤)
2 .:. Læse alt imellem ¤¤ og ¤£
3 .:. Læse alt imellem ¤£ og £¤#
4 .:. Læse fra £¤# til sidst på siden

Kan jeg få en til at lave et eks. til mig?... for jeg vil gerne vide hvordan
man gør...


--
Steen Nielsen
http://www.msdesign.dk
Professionelt webdesign til fornuftige priser



Jakob Jensen (26-01-2002)
Kommentar
Fra : Jakob Jensen


Dato : 26-01-02 01:09

Hej Sten

Har du prøvet
Artadmin http://www.mysql.com/Downloads/Win32/ARTADMIN203.EXE
eller
phpMyAdmin http://phpwizard.net/projects/phpMyAdmin/

Mvh. Jakob Jensen
http://www.debatkat.dk

"Steen (MSDesign.dk)" <steen@msdesign.dk> wrote in message
news:a2smue$281m$1@news.cybercity.dk...
> > Nej, jeg er helt med, det er det, jeg selv har lavet til min hjemmeside
> > ... (Jeg har siden fundet ud af at MySQL klart er din ven. Det andet
> > giver for meget besvær i længden).
>
> Jeg ved godt at man kan med mysql... men jeg vil gerne lære det her lidt
hen
> af vejen..
> Desuden så har jeg et mindre problem, jeg sidder på et win32 system
(WinXP)
> med apache server.. og jeg har et mindre problem med at få installeret
mysql
> på den... uanset hvad jeg gør så laver den fejl... jeg kan ikke oprette en
> mysql DB, hverken via dos eller via php... og jeg har fulgt 6 forskellige
> toturials (ikke på en gang...) for at se om det var mig der var noget galt
> med..
>
>
> > Hvis du er 110% dødsikker på at der altid vil være et navn, en email og
> > en hjemmeside i de 3 første linier og derefter en kommentar i linie 4
> > (evt. i linie 4 og fremefter), så kan du bruge
> >
> > $fileArray = file($something);
> >
> > til at hente filen ind i et array (en linie for hver plads) og derefter
> > tilegne de enkelte pladser til dine $email, $navn, $hp og $kom variable.
> >
> > Dem kan du derefter bruge som du selv har skrevet ovenfor.
> >
> > Håber det hjalp?
>
> Der må jeg altså tilstå at det ikke gjorde...
> For jeg er ikke altid sikker på at det netop skulle følge det mønster....
> det var jo som jeg skrev kun et eks. og jeg havde også tænkt mig at det
> skulle gøres på en anden måde...
> Men mit udgangspunkt er at jeg gerne vil vide hvordan man får PHP til at
> læse imellem 2 forskellige punkter... f.eks så kan jeg lige illustrere det
> lidt anderledes nedefor...
>
> dette er hvad der står i .txt dokumentet...
>
> --------------------------------------------------------------------------
> Steen Nielsen ¤¤ steen@msdesign.dk ¤£ http://www.msdesign.dk £¤# Dette er
en
> wollasej side med en masse seje ting på.....desuden vil jeg have at der
> bliver delt nogle bajere ud til alle dem i den her NG!!...
> --------------------------------------------------------------------------
> Så skal jeg "bare" få php til at:
> 1 .:. Læse endtil ¤¤ (uden at skrive ¤¤)
> 2 .:. Læse alt imellem ¤¤ og ¤£
> 3 .:. Læse alt imellem ¤£ og £¤#
> 4 .:. Læse fra £¤# til sidst på siden
>
> Kan jeg få en til at lave et eks. til mig?... for jeg vil gerne vide
hvordan
> man gør...
>
>
> --
> Steen Nielsen
> http://www.msdesign.dk
> Professionelt webdesign til fornuftige priser
>
>



Steen \(MSDesign.dk\~ (27-01-2002)
Kommentar
Fra : Steen \(MSDesign.dk\~


Dato : 27-01-02 17:36

> Har du prøvet
> Artadmin http://www.mysql.com/Downloads/Win32/ARTADMIN203.EXE
> eller
> phpMyAdmin http://phpwizard.net/projects/phpMyAdmin/

nej.. men jeg vil heller ikke lige lære mysql lige nu... jeg skal stadig
lige kunne mestre nogle af de basis ting der findes i PHP....
såå...
men der blev ikke svaret på mit spørgsmål...
så jeg håber en anden vil svare... et eks. vil også være godt...



Mads Pedersen (24-01-2002)
Kommentar
Fra : Mads Pedersen


Dato : 24-01-02 02:57

in article a2n41s$aeo$1@sunsite.dk, Alexander at alexander.j@mail.dk wrote
on 23/01/02 20:48:

> Jeg har brug for at læse et bestemt område af en fil. Dvs. at jeg
> fx ønsker at starte læsning ved ordet 'abe' og stoppe læsning ved
> ordet 'kamel'. Alt det mellemliggende skal derefter skrives ud.
> Er der nogen der har en idé?

Som jeg forstår dit problem er det i store træk det samme som jeg netop har
"bøvlet" med.

Jeg har lavet en funktion med strpos(), substr() og lidt rekursion som du
nok kan have glæde af at se på.

Der er et mindre problem som er beskrevet i tråden "Rigtigt rekursivt
(variabel problem)" hvor du også kan se funktionen.

// Mads
----------------------------------
..: http://www.madspedersen.com


Lars Petersen (24-01-2002)
Kommentar
Fra : Lars Petersen


Dato : 24-01-02 04:07

> Jeg har brug for at læse et bestemt område af en fil. Dvs. at jeg
> fx ønsker at starte læsning ved ordet 'abe' og stoppe læsning ved
> ordet 'kamel'. Alt det mellemliggende skal derefter skrives ud.
> Er der nogen der har en idé?

$txt = implode('',file('filen.txt'));
if (preg_match('/abe(.*)kamel/si',$txt,$reg))
{
echo "Her: '$reg[1]'";
}
else
{
echo 'Ikke fundet';
}


--
-
Lars
http://coder.dk/sohofaq.php - Uofficiel WOL SOHO 77 FAQ
http://wshlman.moons.dk/ - Say goodbye to GameSpy - A Free Half Life
Manager!
When mailing me, remember there is no truth in my mail!



Peter Brodersen (24-01-2002)
Kommentar
Fra : Peter Brodersen


Dato : 24-01-02 04:21

On Thu, 24 Jan 2002 04:07:12 +0100, "Lars Petersen"
<lars@TRUTHioflux.net> wrote:

> if (preg_match('/abe(.*)kamel/si',$txt,$reg))

Dette er i petitesserne, men for en god ordens skyld:

Man risikerer at ryge for langt, hvis ordet kamel optræder to gange

abe hest kamel cykel lagkage kamel
.... vil altså capture':
" hest kamel cykel lagkage "

Man kan gøre den ungreedy ved at ændre .* til .*? - eller alternativt
tilføje U-modifieren. Ydermere vil vi måske gerne have at abe og kamel
optræder ved siden af et whitespace (og så undgår vi også at få det
med i vores capture). Så mit forslag - måske mere præcist, men dog
mindre gennemskueligt:

if (preg_match('/abe\s+(.*?)\s+kamel/si',$txt,$reg))

--
- Peter Brodersen

Lars Petersen (24-01-2002)
Kommentar
Fra : Lars Petersen


Dato : 24-01-02 04:29

> > if (preg_match('/abe(.*)kamel/si',$txt,$reg))
>
> Dette er i petitesserne, men for en god ordens skyld:
>
> Man risikerer at ryge for langt, hvis ordet kamel optræder to gange
>
> abe hest kamel cykel lagkage kamel
> ... vil altså capture':
> " hest kamel cykel lagkage "
>
> Man kan gøre den ungreedy ved at ændre .* til .*? - eller alternativt
> tilføje U-modifieren. Ydermere vil vi måske gerne have at abe og kamel
> optræder ved siden af et whitespace (og så undgår vi også at få det
> med i vores capture). Så mit forslag - måske mere præcist, men dog
> mindre gennemskueligt:
>
> if (preg_match('/abe\s+(.*?)\s+kamel/si',$txt,$reg))

Det er sandt, og hvis vi virkelig skal hænge os i sådanne ting, så
bør den se sådan ud:

if (preg_match('/\babe\b\s+(.*?)\s+\bkamel\b/si',$txt,$reg))

\b er "word boundary" - nu vil regex'en kun reagere på "abe" og hverken
"tabe", "aben" eller "taber" osv

=)

--
-
Lars
http://coder.dk/sohofaq.php - Uofficiel WOL SOHO 77 FAQ
http://wshlman.moons.dk/ - Say goodbye to GameSpy - A Free Half Life
Manager!
When mailing me, remember there is no truth in my mail!



Søg
Reklame
Statistik
Spørgsmål : 177505
Tips : 31968
Nyheder : 719565
Indlæg : 6408554
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste