Я вижу эту проблему снова и снова в своем кодировании PHP, и я никогда не понимал, что происходит.
$val = $matches[1][$i]
В этом примере $ i = 0 (задано в цикле for), а значение, содержащееся в этом измерении массива, является строкой. Вместо этой строки, присваиваемой $ val, $ val получает 0-й (первый) символ в строке. Если $ i = 1, $ val получает 1-й (второй) символ в строке и т. Д.
Вместо того, чтобы возвращать строку, почему PHP воспринимает это как операцию с подстрокой? Как я могу получить мое строковое значение вместо одного символа в этой строке?