• 解決済 y.h

    (@yh-1)


    こんにちは。
    自分なりに調べてみたのですが、理解が足りず解決できませんので
    お力をいただけたらと思います。

    カスタムフィールド値の文字数を40文字に制限して表示したいのですが、
    その40字以内に改行コードが入ると文字数制限が効かず、はみ出してしまいます。

    現在下記のように記述しています。
    ——————————————
    <?php
    $pattern = ‘/(^.{40})(.+)/u’;
    $subject = post_custom(‘name’);
    $matches = array();
    preg_match($pattern, $subject , $matches);
    if ($matches[2] != ”) {
    $out = $matches[1] . ‘…’;
    } else {
    $out = $subject;
    }
    echo($out);
    ?>
    ——————————————

    自分なりに調べて、
    $str = str_replace(array(“\r\n”,”\r”,”\n”), ”, $str);
    と入れてみたのですが、やはりエラーになってしまいました。。

    自動整形プラグインをいれているので、カスタムフィールドのテキストフィールド内では
    改行がおこなわれています。

    この出力時に改行コードを外して表示できればと思います。

    お力をいただけると幸いです。
    どうぞよろしくおねがいします。

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • こんばんは。

    自分なりに調べて、
    $str = str_replace(array(“\r\n”,”\r”,”\n”), ”, $str);
    と入れてみたのですが、やはりエラーになってしまいました。。

    str_replaceを見ると、

    (正規表現のような) 技巧的な置換ルールを必要としない場合、 preg_replace() の代わりにこの関数を常用するべきです。

    とあるため、方向性は正しいと思います。

    未検証ですが、「例1 基本的な str_replace() の例」の2番目の例が近いと思いました。

    // Hll Wrld f PHP となります
    $vowels = array("a", "e", "i", "o", "u", "A", "E", "I", "O", "U");
    $onlyconsonants = str_replace($vowels, "", "Hello World of PHP");

    気になるのは、置き換えに使用する第2パラメータは「”」ではなく、「””」を使用しています。

    こんにちは

    試してみてください

    <?php
    $str = '私も今日かつて同じ留学団に従って事の中より呑み込むたたい。かつて十一月から相違方もけっしてこの意味あっなけれくらいからするているなかっには出入り云えだませて、少々にはしうませません。';
    $count = 30;
    $more = '...';
    
    echo wp_html_excerpt( $str, $count, $more );
    ?>

    どうしてもPHPでやりたいという事なら、

    http://php.net/manual/ja/function.mb-strimwidth.php

    が参考になると思います

    トピック投稿者 y.h

    (@yh-1)

    こんにちは。

    ご教示頂きましてありがとうございます!
    解決いたしました!

    <?php
    $str = post_custom('name);
    $count = 30;
    $more = '...';
    
    echo wp_html_excerpt( $str, $count, $more );
    ?>

    <?php echo mb_substr(get_post_meta($post->ID,'name', TRUE), 0,40); ?>

    結果的に上記2通りの記述で解決することが出来ました。
    どちらでも同じ表示になりました。

    私が最初に使用した記述は検索にわりと引っかかるものなので、
    同じような状況でお困りの方のお力になれれば幸いです。

    せっかくなので、str_replaceの記述でも表示か勉強してみます!

    shirakobatoさん、nobitaさん
    ご連絡頂きありがとうございました。とても助かりました!

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • トピック「カスタムフィールド値の中の改行で出力時に文字数制限が効かなくなる」には新たに返信することはできません。