2009-07-15 10 views

答えて

21

ここに1つの方法です:

$print=preg_replace('/^([^,]*).*$/', '$1', $print); 

list($firstpart)=explode(',', $print); 
+3

正規表現は単純な文字列操作のために少し過度のように思えますか? – schmilblick

+3

正規表現は、蚊の問題のキャノンボールソリューションのビットです –

+0

私はあなたの2番目の例が好きです。これは、explode( '、'、$ print)[0]を使うことができないという賢明な方法です。私はarray_shiftを使用していましたが、私はリストのアイデアがより好きです。 –

9

これはあなたのために働く必要があります。

$r = (strstr($print, ',') ? substr($print, 0, strpos($print, ',')) : $print); 
# $r contains everything before the comma, and the entire string if no comma is present 
+2

これをfの作品文字列にカンマが含まれていないと失敗します。 –

+1

ああ、本当!それを処理する修正されたコード。 – schmilblick

6

あなたは正規表現を使用することができますが、それは常にコンマを持つ単一のペアリングになるだろうと、私はこれを行うだろう:


$printArray = explode(",", $print); 
$print = $printArray[0]; 
+3

あなたは$ printArray [0]を意味しませんか? –

+1

はい、私はそれを修正しました。 –

3
$string="50 days,7 hours"; 
$s = preg_split("/,/",$string); 
print $s[0]; 
+0

なぜこれが投票されたのか分かりません。下の有権者に、説明する気がする? – ghostdog74

+0

おそらく、あなたは少し残忍なpreg_split()を使ったからでしょうか? –

+1

私はその過度な考えはしていません。それは問題を解決しませんでした。 – ghostdog74

3

ます。またcurrent機能を使用することができます。

をこのファミリーから
$firstpart = current(explode(',', $print)); // will return current item in array, by default first 

また、他の機能:

$nextpart = next(explode(',', $print)); // will return next item in array 

$lastpart = end(explode(',', $print)); // will return last item in array 
関連する問題