В Perl я могу сделать: 1 while $var =~ s/a/b/;
, и он заменит все a
на b
. Во многих случаях я использовал бы его больше как 1 while $var =~ s/^"(.*)"$/$1/;
, чтобы удалить все пары двойных кавычек вокруг строки.
Есть ли способ сделать что-то похожее на это в PHP, без необходимости
while (preg_match('/^"(.*)"$/', $var)) {
$var = preg_replace('/^"(.*)"$/', '$1', $var, 1);
}
Потому что, очевидно,
while ($var = preg_replace('/^"(.*)"$/', '$1', $var, 1)) { 1; }
не работает.
РЕДАКТИРОВАТЬ: Конкретная ситуация, в которой я работаю, включает замену значений в строке на значения из ассоциативного массива:
$text = "This is [site_name], home of the [people_type]".
$array = ('site_name' => 'StackOverflow.com', 'people_type' => 'crazy coders');
где я буду заниматься:
while (preg_match('/\[.*?\]/', $text)) {
$text = preg_replace('/\[(.*?)\]/', '$array[\'$1\']', $text, 1);
}
с предполагаемым выводом «Это StackOverflow.com, дом сумасшедших программистов»