Как я могу получить весь текст, который не в скобках, используя preg_match_all
? Причина, по которой мне нужно использовать preg_match_all
, заключается в том, что я хочу получить индекс каждого слова.
Данное предложение:
Здравствуйте, как поживаете, сэр?
Я могу извлечь все слова внутри ( )
, который работает. Как я могу также получить весь текст вне ( )
отдельно?
preg_match_all('/\[t-(.*?)\]/', $this->target, $targetWords, PREG_OFFSET_CAPTURE);
Выход:
Array
(
[0] => Array
(
[0] => are
[1] => 47
),
[0] => Array
(
[0] => today
[1] => some number
)
)
Примечание : Я уже знаю о preg_split
:
$outsideParenthesis = preg_split('/\[.*?\]/', $this->target);
Но это не позволяет мне поддерживать индекс.
Примечание 2: Может помочь в достижении моей конечной цели:
Я хочу взять строку пользовательской уценки. Для каждого слова я хочу генерировать объекты слова, которые определяют их тип и содержание.
Причина в том, что я хотел бы отправить массив объектов Word для внешнего интерфейса, чтобы я мог циклически проходить по массиву и генерировать HTML-элементы с классами, чтобы при необходимости применять стилизацию.
И я хочу иметь возможность указать любую уценку в пределах, например,
Здравствуйте, как поживаете, сэр?
Где t- это цель, k- это ключ.
Итак, окончательный массив, который я хотел бы, выглядел бы так:
[
[
type => 'normal'
content => 'Hello how '
],
[
type => 'target'
content => 'are'
],
[
type => 'normal'
content => ' you'
]
[
type => 'key'
content => 'today'
]
[
type => 'normal'
content => ', Sir?'
]
]
Вот моя функция wordObjects:
private function setWordObjects($array, $type)
{
return array_map(function ($n) use ($type) {
return [
'type' => $type,
'content' => $n[0],
'index' => $n[1]
];
}, $array[1]);
}