2011-03-25 13 views
10

以下の変数値の括弧「[」と「]」を$widget_textから削除し、結果を$widget_idに保存する必要があります。文字列から特定の文字を削除する方法はありますか?

$widget_text = '[widget_and-some-text]'; 
$widget_id = ?; 

使用preg_replacestr_replaceまたは他の何か?

+0

ミシェルの答えは、あなたが行われていますが、文字列の任意の検証を行いたいん得るのだろうか? –

+1

@Col。 S:助けを借りて助けてくれてありがとうございます;-) –

答えて

39

いくつかの方法があり、preg_replace/str_replaceのように正確に同じタスクを実行するようにすることもできます。しかし、おそらく大括弧は文字列の先頭または末尾からのみ削除したいと思うかもしれません。この場合、preg_replaceが動作します。しかし、複数の括弧がある場合、preg_replaceもその作業を行うことができます。しかし、トリムは簡単であり、より理にかなっています。

にpreg_replace() - これはテキストのどこに括弧を削除し

$widget_id = str_replace(array('[',']'), '',$widget_text); 

(トリム) - - ブラケットをトリミング

$widget_id = preg_replace(array('/^\[/','/\]$/'), '',$widget_text);  

str_replace()はブラケットを開始し、末尾の削除始めから終わりまで

$widget_id = trim($widget_text,'[]') 

SUBSTR() - (トリムと同じ処理を行い)(ウィジェットのテキストは、テキスト内の任意の閉鎖ブラケットを含まないと仮定して)

$widget_id = substr($widget_text, 
        $start = strspn($widget_text, '['), 
        strcspn($widget_text, ']') - $start 
      ); 
+3

+1です。 –

+0

@Scott B:np、あなたは既に知っていたと思った。str_replaceを使用するには_how_ –

+0

Yep:実際にはトリムオプションが好きかもしれない。良いCol.が示すようにそのどちらかの方法は些細なことです。 –

6
$widget_id = str_replace('[', '', str_replace(']', '', $widget_text)); 
+5

'$ widget_id = str_replace(配列( '['、 ']')、 ''、$ widget_text);'より良い –

+0

@Carlos:ありがとう!役に立つ説明とユースケースの例は –

1

ブラケットは、最初と最後の位置に常にある場合、これを使用する:

$widget_id = substr($widget_text, 1, strlen($widget_text)-2); 

私は、これはより高速な方法だと思います...

+1

最速の方法:$ widget_text = 'widget_and-some-text'; :P –

+0

しかし、ジョークを除いて、同等のpreg_replace(array( '/^\ [/'、 '/ \] $ /')、 ''、$ widget_text) –

関連する問題