0

文字列内を検索して、[topic]が数値と等しいかどうかを調べ、文字列内からのみその数値を取得できるようにする必要があります。

たとえば、次のような文字列:

[topic]=10[board]=1

10を返す必要があります

しかし、このような文字列:

[topic][board]=1

0またはfalseを返す必要があります

このような文字列:

[topic]=1.5[board]=2

1を返す必要があります。切り捨てる必要があるためです。floor()

また、負の数については心配していません。これは決して起こらないからです。

[topic]文字列にが存在し、等号で定義されている場合にのみ、このように見えるこれらのタイプの文字列から、数値のみを切り捨てて取得するにはどうすればよいですか。

みんなありがとう :)

4

1 に答える 1

3

以下のアイデアではpreg_match、角かっこ内の「トピック」という単語の後に等号と1つ以上の数字が続く正規表現を使用しています。一致する前に、トピックのデフォルト値を設定しました(falseこの場合)。トピックが見つかったら、それを整数に変換します。

これは、小数点とそれに続く数字を無視します。これ\dは、0から9までの数字のみを含むためです。

例:

<?php 

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

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

var_dump($topic);
于 2012-03-26T06:30:21.820 に答える