web-dev-qa-db-ja.com

PHP:文字列から最後の単語を削除するにはどうすればよいですか?

PHPを使用して、文字列から最後の単語を削除するにはどうすればよいですか?

たとえば、文字列"Hi, I'm Gian Marco""Hi, I'm Gian"になります。

8
Kiuki

これで試してみてください:

$txt = "Hi, I'm Gian Marco";
$str= preg_replace('/\W\w+\s*(\W*)$/', '$1', $txt);
echo $str

出す

Hi, I'm Gian
24
Ahmed Ziani

正規表現でそれを行うことができます。 (Ahmed Ziani。の回答を参照)

ただし、PHPでは、組み込み関数を使用して実行することもできます。以下のコードを参照してください。

$text = "Hi, I'm Gian Marco";
$last_space_position = strrpos($text, ' ');
$text = substr($text, 0, $last_space_position);
echo $text;
8
Nishad Up

これをチェックして

 <?php
$str ='"Hi, I\'m Gian Marco" will be "Hi, I\'m Gian"';
$words = explode( " ", $str );
array_splice( $words, -1 );

echo implode( " ", $words );
?>

ソース: 文字列から最後の2つの単語を削除します

6

最後の単語がわからず、文字列の長さが短い場合、現在の解決策は問題ありません。

あなたがそれを知っている場合、例えばこのようなクエリのために連結文字列をループするとき:

        foreach ($this->id as $key => $id) {
            $sql.=' id =' . $id . ' OR ';
        }

より良い解決策:

        $sql_chain = chop($sql_chain," OR ");

正規表現を使用したpreg_replaceは[〜#〜] very [〜#〜]長い文字列では遅いことに注意してください。このような場合、チョップは100倍速くなり、パフォーマンスが大幅に向上する可能性があります。

3
cpugourou

このコードはあなたを助けるかもしれません:

$str="Hi, I'm Gian Marco";

$split=explode("",$str);
$split_rem=array_pop($split);
foreach ($split as $k=>$v)
{
   echo $v.'';
}
1
lakshman