login  Naam:   Wachtwoord: 
Registreer je!
 Forum

stuk overslaan uit bestand

Offline Emonk - 12/12/2010 08:20 (laatste wijziging 12/12/2010 08:20)
Avatar van EmonkLid hallo allemaal,

ik heb een bepaald bestand, en daar staat bijvoorbeeld:

  1. ------------------------- HEADER -----------------


het aantal streepjes verschilt per bestand.
de bestanden staan gecodeerd, maar worden gedecodeerd als ik ze aanroep.
het probleem: ik wil dat er een aparte regel komt voor zo'n header.
ik had gedacht aan str_replace() met vier streepjes (minimum) en daarna een stuk bestand overslaan, zodat hij niet alle vier streepjes verandert. ik vind alleen geen code die dat kan.

ik denk dat ik niet duidelijk ben, dan moet je het maar even zeggen.

alvast bedankt!

14 antwoorden

Gesponsorde links
Offline avdg - 12/12/2010 09:01
Avatar van avdg PHP gevorderde Al eens gekeken naar de functies PHP.net: strpos en PHP.net: strrpos? Zoeken naar de eerste en laatste spatie in de tekst zou genoeg zijn, tenminste als ik snap wat je bedoel 
Offline Emonk - 12/12/2010 09:04 (laatste wijziging 12/12/2010 09:05)
Avatar van Emonk Lid Nee, het is de bedoeling dat hij het hele bestand weergeeft, maar dat bij een 'streep-lijn' hij een enter geeft.
Dit bijvoorbeeld:

the quick brown fox jumps over the lazy dog the quick brown fox jumps over the lazy dog the quick brown fox jumps over the lazy dog the quick brown fox jumps over the lazy dog the quick brown fox jumps over the lazy dog the quick brown fox jumps over the lazy dog the quick brown fox jumps over the lazy dog
------------------About a fox--------------------
the quick brown fox jumps over the lazy dog the quick brown fox jumps over the lazy dog the quick brown fox jumps over the lazy dog the quick brown fox jumps over the lazy dog the quick brown fox jumps over the lazy dog the quick brown fox jumps over the lazy dog the quick brown fox jumps over the lazy dog
Offline avdg - 12/12/2010 09:07
Avatar van avdg PHP gevorderde Hmm.. Ik kan je niet volgen
Offline Emonk - 12/12/2010 09:08 (laatste wijziging 12/12/2010 09:09)
Avatar van Emonk Lid normaal zou het zijn:

the quick brown fox jumps over the lazy dog the quick brown fox jumps over the lazy dog the quick brown fox jumps over the lazy dog the quick brown fox jumps over the lazy dog the quick brown fox jumps over the lazy dog the quick brown fox jumps over the lazy dog the quick brown fox jumps over the lazy dog ------------------About a fox-------------------- the quick brown fox jumps over the lazy dog the quick brown fox jumps over the lazy dog the quick brown fox jumps over the lazy dog the quick brown fox jumps over the lazy dog the quick brown fox jumps over the lazy dog the quick brown fox jumps over the lazy dog the quick brown fox jumps over the lazy dog

maar het moet zijn

the quick brown fox jumps over the lazy dog the quick brown fox jumps over the lazy dog the quick brown fox jumps over the lazy dog the quick brown fox jumps over the lazy dog the quick brown fox jumps over the lazy dog the quick brown fox jumps over the lazy dog the quick brown fox jumps over the lazy dog
------------------About a fox--------------------
the quick brown fox jumps over the lazy dog the quick brown fox jumps over the lazy dog the quick brown fox jumps over the lazy dog the quick brown fox jumps over the lazy dog the quick brown fox jumps over the lazy dog the quick brown fox jumps over the lazy dog the quick brown fox jumps over the lazy dog

de streeplijn moet dus één lijn voor zichzelf hebben
Offline avdg - 12/12/2010 09:10
Avatar van avdg PHP gevorderde Probeer eens met de functies die ik je eerder gaf om de eerste streepje te vinden, om de laatste te vinden, gebruik de functie PHP.net: strcspn, wat zoekt naar het eerste teken dat niet gelijk is met de gegeven string.

Succes  
Offline Emonk - 12/12/2010 09:59 (laatste wijziging 12/12/2010 10:29)
Avatar van Emonk Lid maar er kunnen meerdere streeplijnen in het bestand zitten, kan het dan ook?

ik volg die functies niet helemaal, kun je anders een simpel voorbeeld geven?

als je het bestand wilt dat ik al heb, zeg het dan even!
Offline MiST - 12/12/2010 12:22
Avatar van MiST Lid preg_replace?

patroon iets in de aard van ^----[-]* HEADER ----[-]*$

Ben geen regexp expert en hem 'm niet getest maar wat 'm zou moeten doen is zoeken voor lijntjes die beginnen met minstens 4 streepjes + variabel aantal streepjes, een spatie, de string 'HEADER' en dan terug een spatie en streepjes (minimaal 4).

Je headers kunnen precies wel nog anders zijn dan 'HEADER' dus dat gedeelte kan je opvangen met (.)* (alle mogelijke karakters, maakt niet uit welke lengte). Je titel zit dan in reference $1 (dit is geen php var ;))

Nu moet je wel zelf verder kunnen 
Offline avdg - 12/12/2010 12:29
Avatar van avdg PHP gevorderde Bwah, misschien zijn regex sneller dan 3 functies in een loop, maar uiteindelijk valt het nog mee denk ik.

Over het probleem met de meerdere streepjes: je kan toch de lengte van de streepjes uitrekenen en vergelijken of het klopt (groep1 evenveel "-" als groep2 "-" en zeker minstens 2 lang). Dit in regex is echter al iets complexer 
Offline Emonk - 12/12/2010 15:57
Avatar van Emonk Lid
MiST schreef:
preg_replace?

patroon iets in de aard van ^----[-]* HEADER ----[-]*$

Ben geen regexp expert en hem 'm niet getest maar wat 'm zou moeten doen is zoeken voor lijntjes die beginnen met minstens 4 streepjes + variabel aantal streepjes, een spatie, de string 'HEADER' en dan terug een spatie en streepjes (minimaal 4).

Je headers kunnen precies wel nog anders zijn dan 'HEADER' dus dat gedeelte kan je opvangen met (.)* (alle mogelijke karakters, maakt niet uit welke lengte). Je titel zit dan in reference $1 (dit is geen php var ;))

Nu moet je wel zelf verder kunnen 


Dank je wel!
Maar de header heet niet altijd 'HEADER'... is daar iets op te verzinnen?
Offline avdg - 12/12/2010 16:04
Avatar van avdg PHP gevorderde vervangen door "[a-zA-Z0-9]{2,}"?
Offline Emonk - 12/12/2010 16:10
Avatar van Emonk Lid eerlijk gezegd kom ik er nog steeds niet uit.
want hoe regel je dat de header zelf blijft staan?
Offline Emonk - 12/12/2010 16:12
Avatar van Emonk Lid eerlijk gezegd kom ik er nog steeds niet uit.
want hoe regel je dat de header zelf blijft staan?
Offline avdg - 12/12/2010 16:27
Avatar van avdg PHP gevorderde Expressie tussen haakjes plaatsen en backreference gebruiken http://www.php....rences.php
Offline Emonk - 12/12/2010 16:58
Avatar van Emonk Lid sorry hoor...
maar dit snap ik allemaal niet..
het script wordt toch niet zo groot? kun je dat niet gewoon laten zien? dan kan ik het wel wat aanpassen.
Gesponsorde links
Je moet ingelogd zijn om een reactie te kunnen posten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.2s