Итак, у меня есть вложенный массив, который имитирует макет таблицы (столбцы и строки):
{
"1": [
{
"row": "My name is Trevor\n"
},
{
"row": "Can you see me?\n"
},
{
"row": "\f"
}
],
"2": [
{
"row": Hey there! Some other text.\n"
},
{
"row": "What is up?\n"
},
{
"row": "\f"
}
],
"3": [
{
"row": "Some text on the third column. First row."
},
{
"row": "\f"
}
]
}
Итак, «1», «2», «3» - это столбцы, а затем под каждым столбцом., может быть любое количество строк.
Теперь я пытаюсь это сделать, поэтому мои пользователи могут выполнять различные правила синтаксического анализа:
- Все столбцы и все строки.
- Определенные столбцы и все строки.
Всякий раз, когда столбец / строка была проанализирована, она должна быть возвращена в «исходный массив».
Для этого у меня естьсоздал класс, который будет применять различные правила синтаксического анализа, которые я указал.Получение правила разбора работает нормально.В настоящее время я застрял в фактическом аспекте преобразования / разбора текста.
Учтите, что у меня есть правило разбора, называемое "regexTextReplace", которое выглядит так:используя его:
$options = [
'pattern' => '/Trevor/i',
'replacement' => 'Oliver',
];
$engine = new regexTextReplace($options);
$columns = $engine->apply($document->content, 1); //"1" is the specific column.
$columns
возвращает:
[
{
"row": "My name is Oliver\n"
},
{
"row": "Can you see my?\n"
},
{
"row": "\f"
}
]
Две проблемы здесь:
- Он успешно применяет правило разбора (Тревер заменен Оливером).Но он возвращает только первый столбец, но я хочу преобразовать весь исходный массив.
- Если я удаляю
1
из метода apply()
, я получаю ошибку ниже:
Array to string conversion
в строке ниже:
return preg_replace($this->pattern, $this->replacement, $table);
Может ли кто-нибудь направить меня в правильном направлении, чтобы я мог выполнить свое правило синтаксического анализа для любого столбца или для всех столбцов и вернуть преобразованные данные обратно вмой оригинальный массив?