PHP: Найти и извлечь в массив все экземпляры определенного текста в строке - PullRequest
1 голос
/ 11 августа 2010

У меня есть строка, содержащая несколько «заполнителей», и каждый заполнитель помечается следующим синтаксисом: {значение}.

Я хочу иметь возможность извлекать каждый заполнитель в строке и загружать их в массив.

Например, если бы у меня была эта строка здесь ... "это строка {test}, чтобы продемонстрировать мою {цель}."

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

Я ковырялся с preg_split, но никак не мог обернуться вокруг него. Любые идеи о том, как это сделать?

Спасибо!

Ответы [ 2 ]

2 голосов
/ 11 августа 2010

Вы можете попробовать следующее, чтобы получить то, что вам нужно:

$placeHolders = array();
if(preg_match_all('/\{([^{}}]+)\}/', $haystack, $matches)) {
    $placeHolders = $matches[1];
}

Поскольку вы не указали конкретно, что будет разрешено в заполнителе, я сохранил регулярное выражение довольно общим.По сути, местозаполнителем может быть что-либо внутри фигурных скобок (кроме самих фигурных скобок).

Возможно, вы захотите ограничить больше, например только буквенно-цифровыми символами.В этом случае попробуйте:

'/\{([a-zA-Z0-9]+)\}/'

Редактировать: ресурс для регулярных выражений: http://www.regular -expressions.info / reference.html

1 голос
/ 11 августа 2010

Я думаю, вы можете использовать это

preg_match_all('/\{([^\}]+)\}/i', $your_string, $match);

все заполнители в $ match [1]; Подробнее об этой функции читайте на http://php.net/manual/en/function.preg-match-all.php

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...