PHP で説明フィールドを切り捨て、適切な位置に省略記号を挿入して、ユーザーがクリックして詳細を確認できるようにしようとしています。したがって、フィールドからいくつかの文字を取得します。
LEFT(html,340) as descr
次に、変数を設定します...
$desc= $a['descr'];
ここで難しい部分があります...文字列の最後の句読点を見つけて、それらを「...」に置き換えたいと思います。文をランダムな位置で分割するのは非常に見苦しいと思うからです。次に、文が長すぎて句読点がない場合、または結果が短すぎる場合、実際には最初に見つかったスペースを最後から置き換え始めます.
$desc1=preg_replace('/([\.\-_,:].*)$/','...',$desc);
$desc=strlen(strlen($desc1)>170&&340>strlen($desc1))?$descr1:
preg_replace('/(\s.*)$/','...',substr($desc,0,300));
これは私がこれまでに試したことですが、問題は文字列を完全にランダムな位置で分割することですが、最後の句読点の位置からではありません。うーん
また、句読点がいくつか一緒に見つかった場合も無力です。最後に、ダッシュの前にスペースがある場合にのみ、ダッシュを置き換えたいと思います。しかし、私はこれらのことを行う方法を理解できないようです。つまり、すべてをまとめる方法を意味します...
以上の点について、何かアドバイスをいただければ幸いです。
ああ、それが私がそれを解決した方法です
$desc1 = preg_replace('/[.,!:_]+[^.,!:_]*$/', '... ', $desc);
$desc=(strlen($desc1)<170)?preg_replace('/[\s]+[^\s]*$/', '... ', $desc) : $desc1;