У меня есть строка следующим образом

$str = 'asdasdasd,sdfsdfsdf myNumber=1234, 2323 dfdfdf9898 sdfsdfdsf 234';

Я хочу вернуть цифры в пределах myNumber=1234.

Желаемый результат

$str = '1234';

В настоящее время я использую следующее регулярное выражение preg_replace('/\myNumber=\d+/', '', $y) для замены при необходимости, которое отлично работает, но я не уверен, как я могу использовать это для извлечения чисел после знака = из myNumber=1234?

0
user5483305 9 Май 2016 в 15:07

2 ответа

Лучший ответ

Вы можете использовать preg_match со следующим регулярным выражением:

\bmyNumber=(\d+)

См. демонстрацию регулярного выражения

Значение будет доступно в группе 1. (\d+) соответствует и захватывает 1+ цифр в группу, которая будет частью результирующего массива.

Демо:

$re = '~\bmyNumber=(\d+)~'; 
$str = "asdasdasd,sdfsdfsdf myNumber=1234, 2323 dfdfdf9898 sdfsdfdsf 234"; 
preg_match($re, $str, $m);
echo $m[1];
0
Wiktor Stribiżew 9 Май 2016 в 12:12

Вы можете использовать следующую функцию:

function getStringBetween($str, $from, $to)
{
    $sub = substr($str, strpos($str, $from) + strlen($from), strlen($str));
    return substr($sub, 0, strpos($sub, $to));
}

Тогда вы можете использовать это так:

$a = getStringBetween($str, 'myNumber=', ',');

Который даст вам результат 1234, поскольку он находится между заданными строками.

0
Yair.R 9 Май 2016 в 12:11