これを達成するには、説明とタイトルをすべて読んだ後に、必要な文字数になるようにRSSを読んで、タイトルと説明を読む必要があるRSSからブログのRSSを読む必要があります。その後、最後の単語の記述が完了したかどうかを確認し、完了していない場合は最後の単語を削除し、「...」を入れる必要があります。
まず、説明をトリミングすると入れてスクリプトを作成します「...」最後に: -
<?php
global $text, $maxchar, $end;
function substrwords($text, $maxchar, $end='...') {
if (strlen($text) > $maxchar || $text == '') {
$words = preg_split('/\s/', $text);
$output = '';
$i = 0;
while (1) {
$length = strlen($output)+strlen($words[$i]);
if ($length > $maxchar) {
break;
}
else {
$output .= " " . $words[$i];
++$i;
}
}
$output .= $end;
}
else {
$output = $text;
}
return $output;
}
今、我々は値を格納する変数を定義します: -
$xml=("http://your-blog-path/rss/");
global $item_title, $item_link, $item_description;
$xmlDoc = new DOMDocument();
$xmlDoc->load($xml);
$x=$xmlDoc->getElementsByTagName('item');
ここでは、配列を作成してその中に値を格納します。あなたはそれを尋ねたので私は3つしか取っていません。あなたは今、すべてのこれらの値をエコー
for ($i=0; $i<3; $i++)
{
$item_title[$i] = $x->item($i)->getElementsByTagName('title')->item(0)->childNodes->item(0)->nodeValue;
$item_link[$i] = $x->item($i)->getElementsByTagName('link')->item(0)->childNodes->item(0)->nodeValue;
$item_description[$i] = $x->item($i)->getElementsByTagName('description')->item(0)->childNodes->item(0)->nodeValue;
}
?>
(表示したいポストの数は、ループ内であること置く)何も変更することができ、リンクは、ユーザーがクリックします値であり、彼はに取られますブログ: -
FIRST最近POST:
<a href="<?php echo $item_link[0]; ?>"><?php echo $item_title[0]; ?></a>
<?php echo substrwords($item_description[0],70); ?>
SECOND最近POST:
<a href="<?php echo $item_link[1]; ?>"><?php echo $item_title[1]; ?></a>
<?php echo substrwords($item_description[1],70); ?>
第3の最近のPOST:
<a href="<?php echo $item_link[2]; ?>"><?php echo $item_title[2]; ?></a>
<?php echo substrwords($item_description[2],70); ?>
これがあなたの問題を解決できることを願っています。ところで、ニースの質問。
これは私があなたが質問を再度開くべきだと思う... –
私はこのコードを使用しましたが、私は次のエラーを受け取ります: "PHP致命的なエラー:非オブジェクトのgetElementsByTagName()メンバ関数を呼び出します。問題の行はforループの最初の行です: $ item_title [$ i] = $ x-> item($ i) - > getElementsByTagName( 'title') - > item(0) - > childNodes-> item (0) - > nodeValue; – fullerm