0

テーブルに表示するテキスト ファイルがあります。私は preg_match_all を使用して特定のタイトルを特定のチャプターで見つけており、タイトルとチャプターを preg_replace に置き換えてリンクにしています..

たとえば、テキスト ファイル内の内容は次のとおりです。

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

そして、タイトルとチャプター... (つまり、ナルト 123) を、それが配置されている Web ページへのリンクに置き換えます。

また、Web ページがあるフォルダーパスを有効にする必要があります。

  • folderpath はアニメのタイトルです。したがって、Naruto 123 の場合、フォルダー パスは Naruto/ です。

したがって、最終的にリンクは次のようになります。

http://website/folderpath/animetitle animechapter

私が抱えている問題は、正しいフォルダーパスを取得できるが、2 つ以上の個別のリンクを作成できないことです。私のコードは、Naruto 123 と Naruto 98 を同じリンクに置き換えます。

これが私のコードです:

  <?

  $data=file_get_contents('series-updates.txt'); //get data from file

$regexp[0]="/(Naruto)[[:space:]](\w+)/";

$regexp[1]="/Naruto/";

preg_match($regexp[0], $data, $matches); //match Manga Title with Chapter for URL

$url= $matches[0];

preg_match($regexp[1], $data, $matches2); //match Manga Title for folderpath

$folderpath= $matches2[0];

$patterns= '/(Naruto)[[:space:]](\w+)/';

$replacements= '<a href="'.$folderpath.'/'.$url.'">'.$url.'</a>';

$data=preg_replace($patterns,$replacements, $data);

  $dat=explode("\n",$data); //split data at new lines

  echo '<table cellspacing=0>';

  foreach ($dat AS $value) { //loop

echo '<tr><td>'.$value.'</td></tr>';

  }

  echo '</table>';

  ?>

コードの出力は次のとおりです。

http://xennetworks.com/output3.php

** また、php コードで preg_match_all の代わりに preg_match を使用している理由は、リンクに preg_match_all を使用すると ARRAY の出力が得られ、希望する結果を見てもらいたかったからです。

4

2 に答える 2

0

リンクURLを探しているのかわかりませんが、サイズについてはこれを試してください。

$s= <<<STR
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
STR;

preg_match_all('/\w{3}\s\d{2}\s\d{2}:\d{2}\s(.+)?\s(\d{2,})/', $s, $m);

for ($i=0; $i<count($m[1]); $i++) {
 $url= sprintf('http://xennetworks.com/%s %s', $m[1][$i], $m[2][$i]);
 echo("$url\n");
}
于 2009-12-07T03:46:53.547 に答える
0
<?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>"
?>
于 2009-12-07T10:02:58.223 に答える