2010-12-02 11 views
0

与えられた動的文の一部を得るためのPHPコードを書いています。 "this is a test sentence"文を分割するにはどうすればいいですか?

substr($sentence,0,12); 

私は出力を得る:

this is a te 

をしかし、私は、それは代わりに単語を分割する完全な単語として停止する必要があります。

this is a 

は、私が覚えている、ことをどのように行うことができます$sentenceは固定文字列ではありません(何でも構いません)。

+0

だから、明確にするために、含める文字数はどのように決めていますか?最後に部分的な単語で終わると、部分的な単語が削除されます(完了するのではなく)。最初の単語が非常に長い場合はどうなりますか?空の文字列で終わるのは問題ありませんか? – psmears

答えて

3

使用wordwrap

+0

具体的には、 '$ lines = wordwrap($ sentence、12); $ firstLine = $ lines [0]; ' –

+0

@Michael - ワードラップは配列を返しません。 – RabidFire

+0

どちらもsubstr? –

1

explode()機能を使用してみてください。あなたのケースでは

$expl = explode(" ",$sentence); 

あなたは配列にあなたの文章を取得します。最初の単語は$ expl [0]、second - $ expl [1]などとなります。画面に印刷するには、

$n = 10 //words to print 
for ($i=0;$i<=$n;$i++) { 
    print $expl[$i]." "; 
} 
+0

@Linto PD - > $ firstLine = strstr(wordwrap($ sentence、12)、" \ n "、true);'私は上記のコードとまったく同じでした。これはあなたの問題を解決します。いい答えだ。 @トム – B4NZ41

2

を最初に使用します。スペースで爆発を使用する。次に、各パーツ+アセンブルされた文字列の数を数えます。それが限界を超えない場合は、スペースで文字列に連結します。

3

あなたはPHP4を使用している場合は、単にsplitを使用することができます。

$resultArray = split($sentence, " "); 

配列の各要素を1語になります。しかし、句読点には注意してください。

explodeはPHP5で推奨される方法のようになります。これはちょうどpsudoコードではないPHPで

$resultArray = explode(" ", $sentence); 
0

char[] sentence="your_sentence"; 
string new_constructed_sentence=""; 
string word=""; 
for(i=0;i<your_limit;i++){ 
character=sentence[i]; 
if(character==' ') {new_constructed_sentence+=word;word="";continue} 
word+=character; 
} 

new_constructed_sentenceは何をしたいです!

0

いつでも再利用できる関数を作成します。これは、指定された文字列の長さがトリミングする文字数よりも大きい場合、最後のスペースを探します。必要に応じて

function niceTrim($str, $trimLen) { 
    $strLen = strlen($str); 
    if ($strLen > $trimLen) { 
     $trimStr = substr($str, 0, $trimLen); 
     return substr($trimStr, 0, strrpos($trimStr, ' ')); 
    } 
    return $str; 
} 

$sentence = "this is a test sentence"; 
echo niceTrim($sentence, 12); 

これは

this is a 

を印刷します。

これがあなたが探している解決策ですね!

関連する問題