2011-04-07 6 views
0

私はこれを行う方法を考えています。私は文章の中にいくつかのテキストを入れたい。php使い方文章で爆発

これは、データベース内の$ ITEM_TITLEのサンプルです:私がやりたいすべての文章は、+ '最初から始まる取得さ

CAT1 + CAT1 + CAT1

のSUB1のテスト1のSUB1 「私は持っていると思います。この場合

:CAT1

のSUB1のCAT1 +テスト1の

SUB1 +とスペースが遭遇するまで

$pieces = explode(" + ", $item_title); $idonotneed = $pieces[0]; // cat1 
+0

しかし、文章は常に変化します。私はどれくらいの$個があるのか​​分かりません。 – emre

答えて

3

$pieces = explode(" + ", $item_title, 2);

受信したいセグメントの最大量を表す3番目のパラメータを渡すことができます。

$pieces[0]は最初のセグメントになります。 pieces[1]残り。

+0

+1私はそれについて考えなかった。私はこれが私より良い解決策だと思う。 – Jacob

+0

$ item_title – emre

+1

@ baris22はいに5,6 '+'があっても、完全な文章になります。ただし、文に+がない場合を除き、 '$ pieces [0]'のみ存在するので、count/issetをチェックする必要があるかもしれません – Jacob

1
$pieces = explode(' + ', $item_title); 
array_shift($pieces); 
$wanted = implode(' + ', $pieces); 
1
preg_replace('/^.*?\+ /', '', $item_title); 

それは基本的には+スペースが続くがない場合...アップ文字列の先頭から何かを削除しています、それは文全体を返します。正規表現内訳

  • .*?マッチ任意の文字(非貪欲は、秒で説明します)。
  • \+ / Aプラス記号は、スペースに続いて(それ以外のスペースは表示されません。ここで/終了の区切り文字を追加しました。

?せずに最初の部分は非貪欲にするために、それが最後にマッチします+

正規表現が何も一致しない場合、何が交換されていないと、文字列全体が返されます。

+0

これはいつも私の文にマッチしますか? – emre

+0

@ baris22は私の答えを編集して説明を追加しました。 – Jacob

+0

私は-1とはしませんが、本当に:なぜですか?他のオプション、!=正規表現は、より速く、魅力的に動作します。なぜあなたのコードを読めないようにしなければならないのですか? – cbrandolino

0

explode()や正規表現は不要です。

$wanted = substr($item_title, strpos($item_title, '+') + 1); 

または:

$wanted = substr(strstr($item_title, '+'), 1); 
1

あなたにもstrposSUBSTRでこれを行うことができます。

$text = "cat1 + sub1 of cat1 + test 1 of sub1 of cat1"; 
$pos = strpos($text, '+'); 
echo substr($text, $pos+1);