Задать вопрос
@Iossarian

Как ловить определенные символы в тексте?

Есть условный текст, который вводит пользователь. Нужно из текста вылавливать все содержимое фигурных кавычек, если внутри них находится число. Например из следующего текста:
{457}7775 {1.000001 }
32
{98} {+3.14} {12637} 98121
должно выловиться "457", "98" и "12637". По условию ТЗ нельзя использовать функции preg_*(), ereg*(), split(), explode(). Не могу понять, как можно это реализовать без регулярок. Есть какие-то предположения?
  • Вопрос задан
  • 53 просмотра
Подписаться 1 Средний 2 комментария
Решения вопроса 1
@DanKud
Если просто чистым перебором массива, без дополнительных функций, то можно так:

function find($str) {
	$str = str_split($str);
	$inc = false; $tempStr = null;
	foreach($str as $v) {
		if ($v == '}' && !empty($tempStr)) {
			$finalArr[] = $tempStr;
			$inc = false; $tempStr = null;
		}
		if ($inc) {
			if (is_numeric($v)) {
				$tempStr .= $v;
			}
			else {
				$inc = false; $tempStr = null;
			}
		}
		if ($v == '{') {
			$inc = true;
		}
	}
	return $finalArr;
}

$str = '{457}7775 {1.000001 } 32 {98} {+3.14} {12637} 98121';

print_r(find($str));
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
strpos + substr
Посимвольный перебор
Ответ написан
Ваш ответ на вопрос

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

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