2012-03-26 4 views
0

文字列内を検索して[トピック]が数字と等しいかどうかを調べ、文字列内からのみその番号を取得する必要があります。例えばPHP - 文字列内の文字列の一部を条件ベースで取得する

、そのような文字列:

[topic]=10[board]=1 

は10

を返す必要があります。しかし、このような文字列:

[topic][board]=1 

が0またはfalse

文字列を返す必要がありますこのように:

我々は floor()

を切り捨てする必要が原因10

[topic]=1.5[board]=2 

は、1を返す必要があります。また、私たちは、これは決して起こらない原因と、負の数を心配していません。

文字列に[topic]が存在し、等号で定義されている場合にのみ、このような文字列から切り捨てて数字を丸ごと取り込むにはどうすればよいですか。以下

みんなありがとう:)

答えて

3

アイデアはpreg_matchと等号、より数字の1が続く角括弧内の単語「トピック」を探し定期急行を使用しています。マッチの前に、私はトピックのデフォルト値(この場合はfalse)を設定します。トピックが見つかったら、それを整数に変換します。

これは、小数点を無視し、\dとして続く任意の番号は数字だけから9まで0

例含まれています。我々はこれを持っている場合

<?php 

$string = '[topic]=10[board]=1'; 

$topic = false; 
if (preg_match('/\[topic\]=(?P<topic>\d+)/', $string, $matches)) { 
    $topic = (int)$matches['topic']; 
} 

var_dump($topic); 
+0

この作品は意志を... ' [topic] = 35.8'は35を返し、 '[topic] = 185.0'は185を返します。 – SoLoGHoST

+0

@SoLoGHoST - そうです。 –

+0

これはうまくいくと思います。 – SoLoGHoST

関連する問題