2012-02-23 3 views
2

現在、私は最大100文字までの文字列を表示する必要があるが、単語を分割しないでPHPプロジェクトに取り組んでいる。例えば単語を分割しないで最大限に多くの文字を表示する

私は速い茶色のキツネがバック怠惰な犬上

を文字列

を飛び降りている場合は、100回目の文字が「飛び降り」の真ん中にあると言います。私はsubstr($mystring, 0, 100)

これは、この場合には、私は

迅速に印刷したいと思う代わりに

速い茶色のキツネのJUM

が印刷されますを使用しています現時点では ブラウンキツネ

は、キーがスペースではなく、単語の途中で切断しstrrposを使用している

答えて

5
$string = 'The quick brown fox jumped over the lazy dogs back'; 
$maxLength = 20; 

if (strlen($string) > $maxLength) { 
    $stringCut = substr($string, 0, $maxLength); 
    $string = substr($stringCut, 0, strrpos($stringCut, ' ')); 
} 

echo $string; 

// output: The quick brown fox 

を修正するために、このことが可能です。

注:これらの文字列のソースに、マルチバイト文字セット(UTF-8など)を使用する場合は、multibyte相当の機能を使用することをお勧めします。

+0

あなたのご協力ありがとうございました。 – Boardy

+0

ようこそ。 – webbiedave

+0

古いスレッドですが、これは最後の単語を切り捨ててしまいます。 –

0
//Set up - we need 100 characters 
$s="The quick brown fox jumped over the lazy dogs back"; 
$s="$s. $s. s."; 

//Cut 
$t=substr($s,0,100); 

//Trim 
$u=preg_replace('/^(.*).\s\w*$/','${1}',$t); 

//Output 
echo $u; 
1

PHPのwordwrap()関数が役立ちます。 http://php.net/manual/en/function.wordwrap.php

それが原因区切り文字列にちょっとハックですが、簡潔である:あなたの元の文字列が含まれている場合、これが壊れること

$str2 = wordwrap($str,20,'@@@@@'); 
$str_final = substr($str2,0,strpos($str2,'@@@@@')); 

は、注記「@@@@@」、私はそれを使用しています私が描くユニークなセパレータは、ほとんどの英語の文字列には存在しません。 '@@@@@'を気楽に変えてください。

関連する問題