0

更新: このコードはこれまでのところ機能します。まだ微調整中。

$trimmed = file('http://www.edvizenor.com/mercy/love/dm8.php');

foreach ($trimmed as $line_num => $line) 
{


if(preg_match("/<td class=\"num\">/",  $trimmed[$line_num], $matches))

  {   
 $num++;
  }


  $Content[$num] .= $trimmed[$line_num];




}

// Example array! 
echo $Content[6];

////

更新を終了


PHPを使用してテーブルの内容を配列に取得しようとしています。各番号の後のすべての段落を配列に取得したいと思います。

URL は次のとおりです: http://edvizenor.com/mercy/love/dm8.php

段落番号だけでなく、各段落番号のテキスト コンテンツも配列に入れる必要があります。それができたら、それらをフォルダに保存して、段落番号で名前を付けたtxtファイルに保存したいと思います。

たとえば、コンテンツを正しい配列に取得した後、段落番号 832 を呼び出したい場合は、次のようにします。

$par = file_get_contents("353.txt"); 
// Need code to get only number
echo $num;
echo "<br>";
echo $par;

// should echo out:
353 
When Mother left for the chapel and I stayed to set the room in order,
I heard these words: Tell all the sisters that I demand that they live
in the spirit of faith towards the superiors at this present time. I 
begged my confessor to release me from this duty. 

コンテンツ全体を文字列に入れて「爆発」させることを考えました。

$Content = file_get_contents("http://edvizenor.com/mercy/love/dm8.php");
$ContentArray = explode("<td class=\"num\">", $Content);

しかし、これは複雑になっています。だから私はそれを止めました。

これを行うための最良の方法に関するアイデア。合計 1868 の段落とコンテンツがあります。そのため、コピーと貼り付けは大変な作業になります。ありがたいことに、すべての html が同じように記述されているので、パターンを見つけて、それに応じてやりたいことを実行できるはずです。しかし、私はそれを理解できないので、StackOverflowの賢明なものに目を向けます:)

4

1 に答える 1

0

アイデアは、url のコンテンツを変数に取得し、domxpath を使用してクエリを実行し、配列にループすることです。

$dom = new DOMDocument();
@$dom -> loadHTML($html);
$xpath = new DOMXPath($dom);

$nums = $xpath->query("//td[@class='num']");
$paragraphs = $xpath->query("//td[@class='num']/following::td[1]");

for($j = 0; $j < $nums->length; $j++){
    $num = $nums->item($j)->nodeValue;
    $para = $paragraphs->item($j)->nodeValue;

    $para_array[$num] = $para;
}

これが結果の例です。 http://randtest.site11.com/

于 2012-09-11T02:28:58.597 に答える