Question

J'ai ce fichier texte:

Dec 04 20:15 Naruto 123
Dec 04 17:42 Naruto 98
Dec 04 16:19 D Gray Man 001
Dec 04 16:05 Bleach 128
Dec 04 12:13 50 x 50 44

Je dois sortir le contenu dans une table avec la date et l'heure dans sa propre colonne et le carrelage et le chapitre dans un autre.

De plus .. Je dois remplacer le titre et le chapitre avec un lien qui doit être formaté ainsi:

<a href="/title/title chapter">title chapter</a>

Pour clarifier les titres dans le fichier texte sont:

Naruto
Naruto
D Gray Man
Bleach
50 x 50

Et les chapitres sont les numéros qui suivent:

123
98
001
128
44
Était-ce utile?

La solution

  1. Lire le fichier et stocker chaque ligne dans un tableau.
  2. Balise
  3. Open <table>
  4. Boucle dans le tableau et extraire la date / heure / titre / chapitre à l'aide regex.

Voici le regex pour commencer - vous pouvez le modifier un peu pour répondre à vos besoins:

/^([a-zA-Z]{3}\s\d{2})\s(\d{2}:\d{2})\s(.+?)\s(\d+)\s*?$/
//$1 contains date : "Dec 04"
//$2 contains time : "20:15"
//$3 contains the title : "Naruto"
//$4 contains the chapter : "123"

Pour chaque élément du tableau, écrivez les balises <tr> et <td> appropriés remplis avec les données extraites.

Mise à jour:

<?php
$filedata = "Dec 04 20:15 Naruto 123
Dec 04 17:42 Naruto 98
Dec 04 16:19 D Gray Man 001
Dec 04 16:05 Bleach 128
Dec 04 12:13 50 x 50 44";

$lines = explode("\n", $filedata);

echo "<table border=\"1\">";

foreach($lines as $line)
{
    echo "<tr>";
    preg_match("/^([a-zA-Z]{3}\s\d{2}\s\d{2}:\d{2})\s(.+?)\s(\d+)\s*?$/", $line, $matches);
    echo "<td>$matches[1]</td>";
    echo "<td><a href=\"/$matches[2]/$matches[2] $matches[3]\">$matches[2] $matches[3]</a></td>";
    echo "</tr>";
}
echo "</table>"
?>

Autres conseils

Quelque chose comme ça devrait faire l'affaire (n'a pas testé le code):

$data = Explode ( "\n", File_Get_Contents ( 'yourfile' ) );

foreach ( $data as $key => $line )
{
    $tmp = Explode ( ' ', $line );
    $month = $tmp[0];
    $day = $tmp[1];
    $time = $tmp[2];
    $numOfEntries = Count ( $tmp );
    $chapter = $tmp[$numOfEntries - 1];

    $title = '';
    for ( $i = 3; $i < $numOfEntries - 1; $i++ )
        $title .= $tmp[$i] . ' ';

    $title = Trim ( $title );

    $link = '<a href="/' . $title . '/' . $title . ' ' . $chapter . '">' . $title . ' ' . $chapter . '</a>';
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top