18

名前のあるデータベースがあり、名前のスペースの後にPHP置換を使用したい、データの例:

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

返して欲しい

Laura
John.
John
4

8 に答える 8

28

ミックスに追加するだけで、最近このテクニックを学びました。

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

ただし、以前に strtok メソッドに出くわしたことがないため、簡単なベンチマークを行いました。strtok は、指定された文字列の例で、リスト/分解ソリューションよりも 25% 高速です。

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

したがって、strtokが勝ちます。

$s = strtok($s,' ');
于 2013-10-19T13:18:47.673 に答える
26

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

$str=substr($str, 0, strrpos($str, ' '));
于 2012-08-29T12:19:57.410 に答える
13

これを試して

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

ストク

于 2012-08-29T12:26:18.413 に答える
6

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

$item = explode(" ", $x);
echo $item[0]; //Laura
于 2012-08-29T12:21:09.873 に答える
1

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

正規表現は計算コストが高くなりますが、柔軟性が大幅に向上します。たとえば、次のようになります。

function get_first_word($str)
{
 return (preg_match('/(\S)*/', $str, $matches) ? $matches[0] : $str);
}
于 2012-08-29T12:29:14.387 に答える
0

このようにすることもできます

$str = preg_split ('/\s/',$x);
print $str[0];
于 2012-08-29T12:23:13.310 に答える
0

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

$str = "CP hello jldjslf0";
$str = substr($str, 0, strpos( $str, ' '));
echo $str;
于 2017-08-17T12:41:37.247 に答える