30

私はこれを行った最後の部分を取得するためにいくつかのことを試みました:

$string = 'Sim-only 500 | Internet 2500';
preg_replace("Sim-Only ^([1-9]|[1-9][0-9]|[1-9][0-9][0-9][0-9])$ | Internet ","",$string
AND
preg_match("/[^ ]*$/","",{abo_type[1]})

最初のものは機能せず、2番目のものは配列を返しますが、実際には文字列が必要です.

4

9 に答える 9

64

文の最後の単語を探しているなら、このようなことをしてみませんか?

$string = '​Sim-only 500 ​| Internet 2500';
$pieces = explode(' ', $string);
$last_word = array_pop($pieces);

echo $last_word;

何らかの理由で本当に必要でない限り、正規表現は不要なので使用することはお勧めしません。

$string = 'Retrieving the last word of a string using PHP.';
preg_match('/[^ ]*$/', $string, $results);
$last_word = $results[0]; // $last_word = PHP.

substr()リソース/効率/オーバーヘッドが懸念される場合は、これらの両方よりもメソッドを使用することをお勧めします。

$string = 'Retrieving the last word of a string using PHP.';
$last_word_start = strrpos($string, ' ') + 1; // +1 so we don't include the space in our result
$last_word = substr($string, $last_word_start); // $last_word = PHP.

このようなことではそれほど大きな違いはありませんが、より高速です。100,000 単語の文字列の最後の単語を常に知る必要がある場合は、おそらく別の方法で対処する必要があります。

于 2013-09-04T11:47:35.833 に答える
9

これはあなたのために働くはずです:

$str = "fetch the last word from me";
$last_word_start = strrpos ( $str , " ") + 1;
$last_word_end = strlen($str) - 1;
$last_word = substr($str, $last_word_start, $last_word_end);
于 2013-09-04T11:55:08.723 に答える
5

何をしようとしているのかによって異なりますが(説明からは理解しにくいです)、文字列から最後の単語を取得するには、次のことができます。

$split = explode(" ", $string);

echo $split[count($split)-1];

詳細については、文字列の最後の単語を取得する方法を参照してください。

于 2013-09-04T11:47:32.727 に答える
1

文字列から最後の単語を取得する一般的な関数があります

public function get_last_words($amount, $string)
{
    $amount+=1;
    $string_array = explode(' ', $string);
    $totalwords= str_word_count($string, 1, 'àáãç3');
    if($totalwords > $amount){
        $words= implode(' ',array_slice($string_array, count($string_array) - $amount));
    }else{
        $words= implode(' ',array_slice($string_array, count($string_array) - $totalwords));
    }

    return $words;
}
$string = '​Sim-​only 500 | Internet 2500​';
echo get_last_words(1,  $string );
于 2013-12-25T12:29:30.940 に答える
1

既存のソリューションはすべて正常に機能しますが、ワンライナーが必要でした。explode()文を単語に分割しますが、それを直接array_pop()またはに渡そうとするとend()、「参照によってのみ変数を渡す必要があります」という通知が表示されます。array_slice()救助へ:

$string = 'Sim-only 500 | Internet 2500';
echo array_slice(explode(' ', $string), -1)[0];
于 2020-11-12T18:04:47.637 に答える
1

最後の単語をスパンでラップする場合:

<?php
/**
 * Wrap last word with span
 * @author: Elron
 * https://stackoverflow.com/questions/18612872/get-the-last-word-of-a-string
 */
function wrap_last_word($string) {
    // Breaks string to pieces
    $pieces = explode(" ", $string);

    // Modifies the last word
    $pieces[count($pieces)-1] = '<span class="is-last-word">' . $pieces[count($pieces)-1] . '</span>';

    // Returns the glued pieces
    return implode(" ", $pieces);
}

wrap_last_word('hello this is wrapped');
// returns this:
// hello this is <span class="is-last-word">wrapped</span>
于 2020-05-23T13:19:11.567 に答える