PHP - получение небольшой части строки в строке на основе критериев - PullRequest
0 голосов
/ 26 марта 2012

Мне нужно иметь возможность искать в строке и выяснять, равен ли [topic] число, и захватывать это число только из строки.

Например, строка, подобная этой:

[topic]=10[board]=1

должен возвращать 10

Но строка, подобная этой:

[topic][board]=1

должна возвращать 0 или false

Строка, подобная этой:

[topic]=1.5[board]=2

должен возвращать 1, потому что нам нужно округлить floor()

Кроме того, нас не волнуют отрицательные числа, потому что этого никогда не произойдет.

КакМогу ли я сделать это, чтобы просто получить число, округляя вниз, из этих типов строк, которые выглядят так, только если [topic] присутствует в строке и определено знаком равенства.

Спасибо, ребята:)

1 Ответ

3 голосов
/ 26 марта 2012

В представленной ниже идее используется preg_match и регулярное выражение, которое ищет слово «тема» в квадратных скобках, за которым следует знак равенства и одно из нескольких чисел. Перед матчами я устанавливаю значение темы по умолчанию (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);
...