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和一个正则表达式,它在方括号内查找单词“topic”,后跟一个等号和多个数字之一。在匹配之前,我设置了主题的默认值(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 回答