2012-01-10 7 views
6

I folowing構造を持つ文字列を持っている:私は2番目の前に文字列を取得できますかセパレータの前に最初の文字列を取得しますか?

7_string_12 
7_string2_122 
7_string3_1223 

"_"?私は私の最終的な結果になりたい

7_string 
7_string2 
7_string3 

私は(「_」、$文字列)を爆発し、最初の2つの値を組み合わせて使用​​していますが、私のスクリプトは非常に遅かったです!

答えて

8
$str = '7_string_12'; 
echo substr($str,0,strrpos($str,'_')); 

はエコー

7_string 

に関係なく、それは常に7_で始まる場合、文字列

+0

ありがとうございます!私は別の質問があります!どのように私に次の結果を示すためにこのコードを作る:文字列?これはセパレータ間の文字列を表示するためです。前もって感謝します ! – dido

+0

@dilyan_kn 'preg_match( '/ _(\ S +)_ /'、$ str、$ m); echo $ m [1]; ' – k102

+0

入力が' 7_string2_abc_123'のようなものでない場合、 'substr($ str、0、strrpos($ str、 '_'))'はOKです。出力は '7_string2_abc'になるからです。 – yasouser

0

の初めに、あなたがこの試すことができているもの:

$string = substr($text, 0, strpos($text, '_', 2)); 

strpos()を文字3から始まる最初の_(文字列から= s)を検索します。次に、substr()を使用して、最初の文字からstrpos()によって返された文字までの文字列全体を選択します。

1
$s1 = '7_string_12'; 
echo substr($s1, 0, strpos($s1, '_', 2)); 
+0

最初のトークンが常に1文字長であるという前提は少し危険です。 –

関連する問題