web-dev-qa-db-ja.com

PHPでスペースの後のすべてを削除するにはどうすればよいですか?

名前のあるデータベースがあり、PHP名前のスペースの後に置き換えます。データの例:

$x="Laura Smith";
$y="John. Smith"
$z="John Doe";

返して欲しい

Laura
John.
John
15
AlphaApp

これを行うと、スペース文字の後のすべてが置き換えられます。ダッシュにも使用できます:

$str=substr($str, 0, strrpos($str, ' '));
17
TheBlackBenzKid

それをミックスに加えるために、私は最近このテクニックを学びました:

list($s) = explode(' ',$s);

ただし、これまでstrtokメソッドに出くわしたことがなく、与えられた文字列の例では、strtokはリスト/展開ソリューションよりも25%高速であるため、簡単なベンチマークを実行しました。

また、最初の文字列が長く/区切られているほど、パフォーマンスのギャップが大きくなります。 5000語のブロックを与えると、explodeは5000要素の配列を作成します。 strtokは最初の「要素」を取得し、残りを文字列としてメモリに残します。

だからstrtokが私に勝ちます。

$s = strtok($s,' ');
20
Codemonkey

これを試して

<?php
$x = "Laura Smith";
echo strtok($x, " "); // Laura
?>

strtok

8
Naveen Kumar

正規表現を使用する必要はありません。単にexplodeメソッドを使用してください。

$item = explode(" ", $x);
echo $item[0]; //Laura
6
oopbase

TheBlackBenzKidが提供するメソッドは質問に対して有効ですが、スペースを含まない引数が提示されると、空白の文字列が返されます。

正規表現は計算コストが高くなりますが、柔軟性が大幅に向上します。例:

function get_first_Word($str)
{
 return (preg_match('/(\S)*/', $str, $matches) ? $matches[0] : $str);
}
1
symcbean

この回答は、受け入れられた回答の場合のように最後ではなく、最初のスペースの後のすべてを削除します。strpossubstrを使用します。

$str = "CP hello jldjslf0";
$str = substr($str, 0, strpos( $str, ' '));
echo $str;
0
Black Mamba

あなたもこのようにすることができます

$str = preg_split ('/\s/',$x);
print $str[0];
0
user1593705