Пример рефакторинга алгоритма обработки строк с помощью функции стандартной библиотеки


Исходный код

function word_filter($str) {
	$filtered = '';
	for ($i = 0; $i <= strlen($str) - 1; $i++) {
		$char = substr($str, $i, 1);
		if (ctype_alpha($char)) {
			$filtered .= $char;
		}
	}
	return $filtered;
}

Что не так в исходном коде

Здесь я вижу либо решение учебной задачи на циклы и ветвления, либо классический пример «велосипеда», свидетельствующий о глубоком незнании стандартной библиотеки языка.

Большинство задач на обработку строк успешно решаются с помощью регулярных выражений. Например, для данного фрагмента отлично подходит функция preg_replace:

$filtered = reg_replace("/[[:^alpha:]]/u", '', $str);

Теория

  • Благословение стандартных библиотек