@Mihail_Mel

Как найти содержимое строки между заданными границами?

Здравствуйте! столкнулся с проблемой! есть изделия, состав которых в БД представлен в виде - id=171:znac=1;id=203:znac=1;id=225:znac=1;id=162:znac=0.5;id=203:znac=31; примерно такой последовательности, которая потом разбирается (соответственно id и его значение)

зная id можно ли найти его значение в этой строке? (важно: левая граница в поиске должна быть не число, а "id=число", так как номер id может совпасть с каким-нибудь значением, правая граница как я понимаю - это первый символ ; после найденного "id=число") и если таких id в строке 2 например? гуглил поиск по строке но там простые примеры выборки количества символов или всех с определенного...
  • Вопрос задан
  • 83 просмотра
Решения вопроса 1
udjin123
@udjin123
PHP, Golang, React
Не надо 3 раза explode, тем более если измениться структура, например добавятся другие параметры после ; , будет весело все переписывать

$string = 'id=171:znac=1;id=203:znac=1;id=225:znac=1;id=162:znac=0.5;id=203:znac=31;';

preg_match_all('/id=(\d+)/', $string, $matches);

var_dump($matches[1]);


Array ( [0] => 171 [1] => 203 [2] => 225 [3] => 162 [4] => 203 )
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Igor_307
@Igor_307
Фрилансер
Если искать значения как вы предложили, то это с помощью регулярных выражений, но я считаю в вашем случае правильнее разбить эту строку в массив что бы ключом массива был id и дальше работать с массивом. Разбить строку в массив можно с помощью explode()
Ответ написан
Комментировать
@Mihail_Mel Автор вопроса
а не усложнит это скрипт? ведь это получается три раза использовать explode(), сначала по разделителю ; потом : или как-то можно сразу перегнать?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы