Avatar billede jensgram Nybegynder
02. november 2003 - 19:38 Der er 14 kommentarer og
1 løsning

Reg-exp til formatering af dokumentation

Hej eksperter

Jeg har nogle filer, der er stillet op som følger:

<?php

/*

Description:
    "Tekst"

Installation:
    "Tekst"

Required objects:
    "Tekst"

Function description:
    Constructor:
        "funktionsnavn(argumenter)"
            "Beskrivelse af funktionen"

    Public functions:
        "funktionsnavn(argumenter)"
            "Beskrivelse af funktionen"

    Private functions:
        "funktionsnavn(argumenter)"
            "Beskrivelse af funktionen"

Example:
    "Tekst"

Change log:
    "Dato:"
        "Beskrivelse"

To do:
    "Tekst"

*/


Class
{

}

?>

Teksten under hver overskrift er altså rykket én 'tab' ind.

Jeg er ikke nogen haj til reg-exp, så mit spørgsmål er følgende:

Hvordan hiver jeg nemmeste alt ud fra hver overskrift?
Det må gerne være på følgende måde:

$str = indhold('To do');
hvor $str så vil indeholde '[tab]"Tekst"' ([tab] er selvfølgelig lig et tryk på tabulatoren - ikke tekst!)

Jeg vil gerne have nogle hints - ikke nødvendigvis færdige løsninger.

Selv tænker jeg på noget med:

function indhold($overskrift)
{
    //reg-exp: $overskrift . (':') . '\n' . "alt_muligt_pånær_en_linie_der_ikke_begynder_med_mindst_én_tab"
    //det er så "alt_muligt_pånær_en_linie_der_ikke_begynder_med_mindst_én_tab" der skal returneres
}



PS: Det ville være helt raket, hvis indhold() IKKE kigger i:

Class "navn"
{
    "indhold"
}


PPS: Der kan godt gå noget tid mellem mine besøg, så vær gerne lidt tålmodig. Alle forslag er velkomne.


På forhånd tak!
Avatar billede detox Nybegynder
02. november 2003 - 19:53 #1
Prøv med:

$pat = "|^[\t](.+)|m";
preg_match_all($pat, $str, $match);
foreach ($match[1] as $item) {
    echo $item."<br />";
}
Avatar billede jensgram Nybegynder
02. november 2003 - 21:32 #2
detox > Den vil jeg kigge på!
Avatar billede jensgram Nybegynder
02. november 2003 - 21:50 #3
hmm - nej!

Den returnerer:

Constructor:
Public functions:
Private functions:

Når jeg giver den:

<?php

/*

Description:
    "Tekst"

Installation:
    "Tekst"

Required objects:
    "Tekst"

Function description:
    Constructor:
        "funktionsnavn(argumenter)"
            "Beskrivelse af funktionen"

    Public functions:
        "funktionsnavn(argumenter)"
            "Beskrivelse af funktionen"

    Private functions:
        "funktionsnavn(argumenter)"
            "Beskrivelse af funktionen"

Example:
    "Tekst"

Change log:
    "Dato:"
        "Beskrivelse"

To do:
    "Tekst"

*/


Class
{

}

?>

som $str...


Det skal være sådan, at den returnerer ALT under en overskrift. Altså:

    Constructor:
        "funktionsnavn(argumenter)"
            "Beskrivelse af funktionen"

    Public functions:
        "funktionsnavn(argumenter)"
            "Beskrivelse af funktionen"

    Private functions:
        "funktionsnavn(argumenter)"
            "Beskrivelse af funktionen"

ved:

Function description:

Osv.
Avatar billede detox Nybegynder
02. november 2003 - 22:04 #4
Pudsigt, jeg får:

"Tekst"
"Tekst"
"Tekst"
Constructor:
"funktionsnavn(argumenter)"
"Beskrivelse af funktionen"
Public functions:
"funktionsnavn(argumenter)"
"Beskrivelse af funktionen"
Private functions:
"funktionsnavn(argumenter)"
"Beskrivelse af funktionen"
"Tekst"
"Dato:"
"Beskrivelse"
"Tekst"

med den samme tekst.
Måske sådan her istedet:

$pat = "|^(\t.+)|m";
Avatar billede detox Nybegynder
02. november 2003 - 22:31 #5
Når du har oplysningerne i filer, så prøv:

<?
$lines = file('fil.txt');
$pat = "|^(\t.+)|m";
$out = "";
foreach ($lines as $line) {
    if (preg_match($pat, $line, $match)) $out .= $match[1];
}
echo nl2br($out);
?>
Avatar billede jensgram Nybegynder
03. november 2003 - 08:47 #6
OK - det prøver jeg...
Avatar billede jensgram Nybegynder
03. november 2003 - 08:52 #7
Nix ;)

Bruger nøjagtig den kodestump på ovenstående fil og får:

    Constructor:<br />
    Public functions:<br />
    Private functions:<br />
Avatar billede detox Nybegynder
03. november 2003 - 12:33 #8
Er du sikker på at alle dine linier under overskriften rent faktisk starter med en <tab>? Det skulle den nemlig returnere.
Avatar billede jensgram Nybegynder
03. november 2003 - 13:01 #9
Hov! Min fejl...

Brugte en side uden indhold under overskrifterne - det havde jeg fuldstændigt overset!

Så leger jeg lidt videre med det - vender tilbage snarest (sikkert i morgen, hvis det er ok)...
Avatar billede jensgram Nybegynder
03. november 2003 - 13:26 #10
Det her:

$lines = file('test.php');
$pat  = "|^(\t.+)|m";
$out  = "<pre>\n";
foreach    ($lines    as $line) {
    if (preg_match($pat, $line,    $match)) {
        $out .= $match[1];
    }
}
$out .= "\n</pre>";
echo $out;

virker sådan set ok, men hvordan skal $pat se ud, hvis jeg eks. kun vil hente indhold fra "To do"?
Avatar billede detox Nybegynder
03. november 2003 - 16:21 #11
Ja, det gør det unægteligt noget mere kringlet. Det kan jeg ikke umiddelbart svare på.
Avatar billede jensgram Nybegynder
03. november 2003 - 23:54 #12
detox > Tak for indsatsen... Jeg lader lige spørgsmålet stå åbent lidt endnu!
Avatar billede jensgram Nybegynder
05. november 2003 - 13:14 #13
Nå, der sker vist ikke så meget. Jeg sad selv også eksperimenterede lidt med ereg() oog endte op med en reg-exp, der blot henter alt mellem /* og */...

Detox > Hvis du lige smider et svar, så får du lidt for indsatsen!
Avatar billede detox Nybegynder
06. november 2003 - 00:30 #14
Nah, det er ok. Du løste jo selv problemet, så tag dem selv. c",)
Avatar billede jensgram Nybegynder
06. november 2003 - 09:59 #15
detox > Jeg vil gerne give noget for hjælpsomheden! Sådan skal det heller ikke være. Opretter et spm med points til dig, hvis du ombestemmer dig.
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

IT-JOB

Politiets Efterretningstjeneste

GenAI-specialist i PET

Forsvarsministeriets Materiel- og Indkøbsstyrelse

DevOps Engineer (AI) til Forsvarets nye IT-platform

Politiets Efterretningstjeneste

Teknisk IT-projektleder, der skaber fremdrift i PET

Capgemini Danmark A/S

AI Data Architect