Avatar billede Slettet bruger
18. august 2004 - 23:30 Der er 7 kommentarer og
1 løsning

Indlæse fil og trække konstanter ud af den

Hej!

Jeg vil gerne trække 2 konstanter ud af en PHP fil som jeg indlæser.

Et eksempel på denne fil kan ses herunder. Det jeg gerne vil trække ud er AUTHOR og USE

<?

DEFINE('AUTHOR', 'Mikkel Pilehave Jensen');
DEFINE('USE', 'Trækker undersider til aktuel side ud');

////////////////////Relaterede sider/////////////////////////
$sql_relaterede = 'SELECT * FROM ' . $kundenavn . '_dokumenter WHERE id > 0 AND id != "' . $row_indhold['id'] . '" AND ejerid="' . $_REQUEST['pid'] . '"';
$result_relaterede = mysql_query($sql_relaterede) or die(mysql_error());

if(mysql_num_rows($result_relaterede) > 0) {

echo '<br><strong>Se også</strong>';

while($row_relaterede = mysql_fetch_array($result_relaterede)) {
?>
<br>- <a href="index.php?pid=<? echo $row_relaterede['id']; ?>"><? echo $row_relaterede['overskrift']; ?></a>
<?
}
}
////////////////////Relaterede sider slut/////////////////////

?>
Avatar billede coderdk Praktikant
18. august 2004 - 23:35 #1
Ikke forstået, vil du trække det ud som om filen var ren text, eller vil du også køre koden samtidigt?
Avatar billede dennismp Nybegynder
18. august 2004 - 23:55 #2
<?php
$file = file_get_contents('530765.txt');

if( preg_match_all("/DEFINE\('([^']+)',\s'([^']+)'\);/", $file, &$matches )) {
    if( $matches[1][0] == 'AUTHOR' )
        $authorIdx = 0;

    $author = $matches[2][$authorIdx%2];
    $use    = $matches[2][$authorIdx+1%2];

    print "author: $author<br/>";
    print "use: $use<br/>";
}
?>
Avatar billede eagleeye Praktikant
18. august 2004 - 23:56 #3
Mener du udskrive dem?

echo "Forfatter ".AUTHOR;
Avatar billede Slettet bruger
19. august 2004 - 00:01 #4
Jeps.

Jeg vil ikke køre al PHP koden, blot finde frem til AUTHOR og USE

Det ligner nok det dennismp har lavet, tester lige :)
Avatar billede dennismp Nybegynder
19. august 2004 - 00:02 #5
Hvis det ikke virker, så smidt et eksempel hvor det går galt.
Avatar billede Slettet bruger
19. august 2004 - 00:02 #6
Det virker jo perfekt!

Tak for hurtig og effektiv hjælp!
Avatar billede dennismp Nybegynder
19. august 2004 - 00:07 #7
Fandt en fejl - har rettet det, så du får en ny udgave.

<?php
$file = file_get_contents('530765.txt');

if( preg_match_all("/DEFINE\('([^']+)',\s'([^']+)'\);/", $file, &$matches )) {
    $authorIdx = null;
    $useIdx    = null;
    for($i=0;$i<count($matches[1]);$i++)
        if( $matches[1][$i] == 'AUTHOR' )
            $authorIdx = $i;
        elseif( $matches[1][$i] == 'USE' )
            $useIdx = $i;

    if( $authorIdx === null || $useIdx === null )
        die("Der er noget galt (kan ikke finde enten AUTHOR eller USE)");

    $author = $matches[2][$authorIdx];
    $use    = $matches[2][$useIdx];
   
    print "author: $author<br/>";
    print "use: $use<br/>";
}
?>
Avatar billede dennismp Nybegynder
19. august 2004 - 00:08 #8
.. det var så lidt. Altid rart med en udfordring :-)
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