1

最初の文字を見つけるだけで文字列を分割する必要があります。どのように書くのが一番手っ取り早いでしょうか?

文字列の例:

$string = 'Some text here| some text there--and here|another text here';

期待される結果:

$new_string = 'Some text here';

これは解決策です。それを行うためのより効率的な方法はありますか?

$explode = explode('|', $string);  
$new_string = explode[0];
4

5 に答える 5

2

使用strstr():

strstr($string, "|", true);

最初のパイプ (|) まですべてを返します。

于 2012-05-04T11:28:11.800 に答える
2

とを使用strpos()substr()ます。Strpos()最初のオカレンスが見つかるとすぐに戻りますが、explode()文字列全体をたどる必要があります。

于 2012-05-04T11:24:48.520 に答える
1

爆発はワンライナーに変えることができます

list($first,) = explode('|', $string,2);

ただし、 strtok は最も簡潔なソリューションのように見えます。

効率に関しては、そのような無視できる操作を実行するためにどの方法を選択するかはまったく問題ではありません。

処理されたデータのに起因する非効率性。そして、正気のプログラマーは、どんな犠牲を払っても大量のデータを処理することを避けます。他に重要なことは何でも、効率の観点からは完全にゴミです。

于 2012-05-04T14:27:07.310 に答える
1
$string = 'Some text here| some text there--and here|another text here';
$string = substr($string, 0, strpos($string,'|'));
print $string;

編集: strstr() を使用する方が優れています。

于 2012-05-04T11:30:59.393 に答える
0

最善の方法は次のとおりです。

$first = strtok($string, '|');

必要に応じて爆発することができます:

$explode = explode('|', $string, 1);

またstrpos()、これsubstr()strstr()適しています。

于 2012-05-04T11:27:57.253 に答える