0

したがって、基本的には非常に大きな文字列をハード化し、その最初の 4 語だけを保存したいと考えています。

私はほとんどこれが機能していましたが、壊れる場合もあります。

これが私の現在のコードです:

$title = "blah blah blah, long paragraph goes here";
//Make title only have first 4 words
$pieces = explode(" ", $title);
$first_part = implode(" ", array_splice($pieces, 0, 4));
$title = $first_part;
//title now has first 4 words

それを壊す主なケースはline-breaks. 次のような段落があるとします。

Testing one two three
Testing2 a little more three two one

は次の$titleようになります。Testing one two three Testing2

もう一つの例:

Testing
test1
test2
test3
test4
test5
test6
sdfgasfgasfg fdgadfgafg fg

タイトルは次のようになります =Testing test1 test2 test3 test4 test5 test6 sdfgasfgasfg fdgadfgafg fg

何らかの理由で、次の行の最初の単語を取得しています。

これを修正する方法について何か提案はありますか?

4

3 に答える 3

1

これを試して:

function first4words($s) {
    return preg_replace('/((\w+\W*){4}(\w+))(.*)/', '${1}', $s);    
}

https://stackoverflow.com/a/965343/2701758

于 2013-09-20T00:31:41.750 に答える
1

少しハックかもしれませんが、str_replace() を使用して改行を削除してみます。

$titleStripped = str_replace('\n', ' ', $title);
$pieces - explode(' ', $title);

ただし、アプリケーションと予想されるデータによって異なります。改行以上が必要な場合は、preg_replace を使用してください。いずれにせよ、爆発する前にデータを準備してください。

于 2013-09-20T00:33:45.813 に答える