Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Bom dia galera!!!
Preciso da ajuda de vocês.
Tenho uma string “modificar uma palavra para variavel %qualquercoisa% e %nome%”
Preciso que as palavras entre %% vire uma variável $qualquercoisa e $nome.
Com a seguinte função consegui extrair as palavras que estão entre as %%, agora não tenho nem noção de como transforma elas em variável dentro de texto.
$entrada “modificar uma palavra para variavel %qualquercoisa% e %nome%”
$saida ““modificar uma palavra para variavel $qualquercoisa e $nome”
Caso alguém saiba como fazer isso e possa me ensinar agradeço.
Obs: usei essa função para pegar as palavras entre %
preg_match_all("(%[A-Za-z]*% )", $text,$matches);
obrigado, agora apenas para entender.
o primeiro exemplo era exatamente o que eu queria.
a primeira ER você pego as palavras que inicia e termina com % já a segunda ER eu não entendi, funciono mas eu gostaria de entender o que foi feito.
se puder explicar fico grato.
Nessa linha você cria uma array chave valor das variáveis informadas
$escopo = compact('nome', 'qualquercoisa');
é o equivalente a:
$escopo = array(
'nome' => $nome,
'qualquercoisa' => $qualquercoisa
);
A função preg_replace_callback faz a mesma coisa que a preg_replace, só que usa uma função (callback) para descobrir pelo que será substituído cada ocorrência.
Dentro de uma função anônima, seu contexto de variáveis e outro, por isso usamos o instrução "use" para passar a variável $escopo para o contexto da função anônima.
A função extract faz exatamente o contrário da função compact:
extract($escopo);
é equivalente a:
$nome = $escopo['nome'];
$qualquercoisa = $escopo['qualquercoisa'];
Na função anônima (callback do preg_replace_callback) você recebe apenas 1 parâmetro: um array, sendo o item 0 a ocorrência completa, e os seguintes itens são os grupos capturados pelo parênteses.
No PHP você pode referenciar uma variável pelo nome dela a partir de uma string, por exemplo:
$nome = 'Teste';
$variavel = 'nome';
echo $$variavel; // = "Teste"
O retorno da função anônima será usado como substituição, no nosso caso, o conteúdo da variável cujo nome foi indicado pelo primeiro grupo da ER;
Quando esta entrada é fornecida pelo usuário, é muito inseguro, pois o usuário poderia ter acesso a qualquer variável dentro daquele escopo, inclusive variáveis como $_SERVER, $_ENV
Olá,
Para trocar trocar "%nome%" pela string "$nome" você pode fazer assim:
Para trocar "%nome%" pelo valor da váriavel $nome você pode fazer assim: