2017-09-23 4 views
0

配列から文字列をPHP substr()関数で指定された長さに切断しようとしましたが、その上に単一の文字列コンテンツはありません。substr関数を使用してイメージを含む配列から文字列を取得する方法

マイコード:

<div class="ct f-light"> 
<?php 
    $num_char = 255; 
    $text = $in['content']; 
    echo substr($text, 0, $num_char) . '...'; 
?> 
</div> 

$in['content']はhtmlです。テキストと画像の両方を含むCKEditorから処理されました。

配列は文字列のみ含まれている場合、これは結果である:

enter image description here

をし、それが唯一の画像が含まれている場合、これが結果です:

enter image description here

どのように私はこの問題を解決することができます?

+0

[$ in ['content'] 'が両方の例にあるものを提供できますか?おそらく、それをカットするのではなく、あなたがCSSで望ましくないコンテンツを隠すかもしれません。 – chris85

+0

はいです。$ [[content]]は両方のテキストとイメージを含む配列プロパティです。 –

+0

https://stackoverflow.com/posts/46382213/editの質問を編集し、それぞれの場合に値を入力してください。 – chris85

答えて

0

[content]のあなたの$はどのように見えますか?それはhtmlでですか?または、どのようにイメージとテキストを混在させましたか?

これをお持ちの場合は、それらを分けることをお勧めします。 (異なる変数に)これは最もクリーンなオプションです。また、あなたはまた、最初のイメージタグを検索することができ、その後、これだけのように、その前にテキストを使用します。

$num_char = 255; 
$text = explode('<img', $in['content'], 2)[0]; 
echo substr($text, 0, $num_char) . '...'; 

あなたは、その後も、空の文字列をチェックしたい場合があります。

htmlを使用していない場合は、使用しているものを明確にしてください。

(また、<p>のようなタグは255文字の制限に含まれるため、255文字未満で表示される可能性があります。また、不正な(不完全な)HTMLが表示される可能性があります)。

+0

はい$ [[content]]はHTMLです。それはckeditorから処理されました。実際に私がsplit()関数を使用している場合、それは動作していますが、エラー "関数split()は推奨されません"。だから、私は爆発して罰金を使う。ご説明をいただき、ありがとうございます。 –

+0

そうです、それは非難されています、私は私の答えでそれを変更します。しかし、それはHTMLなので、たとえば、タグが不完全な場合に問題が発生するので、まずそれをクリーンアップします。 (これは ' SourceOverflow

+0

それが働いたので、あなたは質問を閉じてもらえますか?(この回答を受け入れます)あなたのhtmlのクリーニングは別の質問です – SourceOverflow

関連する問題