アプリ版:「スタンプのみでお礼する」機能のリリースについて

このように設定しています。
どこかに何かをすれば何番目指定表示できるのでしょうか。

<?php
require_once "Feed.php" ; //rss-phpライブラリを読み込みます
require_once 'code_table.ucs2jis';
require_once 'jcode.php';
$feed = new Feed ;
$url = "rss.xmlのURL"; //RSSのURLを入力する
$rss = $feed->loadRss( $url ) ;
$num = 30;//表示させたい件数
$i=0;
$desW = 201;//詳細の文字数を制限します。制限しないときは0にします。


if ( $desW != 0){
$desW = ($desW*2)+2;
}
foreach( $rss->item as $item )
{
if($i>=$num){
}
else{
$title = $item->title ; // タイトル
$title = JcodeConvert($title, 4, 2);
$link = $item->link ; // リンク
$timestamp = strtotime( $item->pubDate ) ; // 更新日時
$description = $item->description ; // 詳細
$description = mb_convert_encoding($description, "Shift_JIS", "auto");
$description = str_replace("-- Delivered by","","",$description);
//$description = str_replace("-- Delivered by","Feed43","service",$description);
//↑ ▼続きを読むなど、決まった文章が詳細にはいっている場合に、それを除外する
$description = strip_tags($description);
if ( $desW != 0){
//表示文字数指定
$description = mb_strimwidth($description, 0, 201, "" , "Shift_JIS");
}
$thumbnail = trim($now_url,"/") . "/img/noimage.jpg";//画像がない場合の指定
if( preg_match_all('/<img([\s\S]+?)>/is', $item->description, $matches) ){
foreach( $matches[0] as $img ){
if ($img === reset($matches[0])) {//最初の画像にマッチしたもの
if( preg_match('/src=[\'"](.+?jpe?g)[\'"]/', $img, $m) ){
$thumbnail = $m[1];
}
}
}
}
?>
<li><a href="<?php echo $link; ?>"><?php echo $title; ?></a><br /><?php echo $description; ?></li>

<?php
$i++;
}
}
?>

A 回答 (2件)

No1です。



>if($i<11 || $i>20){ にしてみましたが、サイトに表示されなくなりました。
そこだけ変えたんでしょうか?
であれば、No1にも記しておきましたが、多分 $i の値が変化していないので、条件に合致するものがないと判断されて、何も表示されないのではないでしょうか?

No1に記したように、$iのインクリメントを外側に出すか、現状のままなら、条件分岐の何もしない部分にインクリメントを追加するなどのどちらかが必要になると思います。
    • good
    • 0

こんにちは



現状で、出力する対象を選別しているのは、
>if($i>=$num){
の部分で、指定項目数より小さければ出力するようになっています。

ですので、この部分をお好みの範囲に設定すれば良いでしょう。
ご提示のロジックでは、省く方を条件式にしていますので、
 if($i<11 || $i>20){
のようにすれば、falseの場合に出力されるようになります。

※ ただし、ご提示のコードでは $i のインクリメントを条件式がfalseの場合だけ行っているように見受けられます。(波括弧が多いので、きちんと確認してはいませんけれど)
条件式できちんとカウントが反映されるには、foreachのループ内で、条件式の結果に関わらず、必ずインクリメントされるようにしておく必要があります。
具体的には、最後の方の
>$i++;
の位置を、確認の上、調整する必要がありそうな気がします。
(きちんと確認していなくて、申し訳ありませんが…)
    • good
    • 0
この回答へのお礼

fujillin様

早速のご回答有難うございます。

早速、if($i>=$num){ を if($i<11 || $i>20){ にしてみましたが、サイトに表示されなくなりました。

もし、お手すきな際に、ご回答頂ければ幸いです。

お礼日時:2021/11/25 12:35

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!