Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá pessoal estou com um problema, tenho um sistema de notícias que estou modificando que a o id da galeria de foto é gravado no corpo da notícia.
O conteúdo da notícia é gravado num campo de uma tabela e no final do conteúdo é gravado a galaria dessa maneira: [gallery id=1]
Como posso ler o id da galeria gravando em uma variável e remover essa anotação do corpo da nótícia?
Desde já muito obrigado.
Olá Alan,
Você pode remover essa informação da String por utilizando uma expressão regular.
Em PHP existe a função preg_split, que destaca a parte desejada e adiciona em uma array.
Exemplo:
Suponha a String $noticia = "Homem pisa na lua[gallery id=1]"
A função pode ser escrita da seguinte forma:
$noticia = "Homem pisa na lua[gallery id=1]";
$extrai_id = preg_match("/\[.*]/", $noticia,$matches);
$noticia = str_replace($matches[0],"",$noticia);
$noticia_id = str_replace("[gallery id=","",$matches[0]);
$noticia_id = str_replace("]","",$noticia_id);
echo "Noticia: $noticia<br>ID: $noticia_id";
Sua solução é melhor, infelizmente nem todo PHP suporta o parametro TRUE para strstr.
É o caso de testar.
Tem essa maneira tb:
$noticia = "Homem pisa na lua[gallery id=1]";
$extrai_id = preg_match("/\[.*]/", $noticia,$matches);
$noticia = str_replace($matches[0],"",$noticia);
$noticia_id = get_match("/\[gallery id=(.*)]/",$matches[0]);
echo "Noticia: $noticia<br>ID: $noticia_id";
function get_match($regex,$content)
{
preg_match($regex,$content,$matches);
return $matches[1];
}
Acho que isto te ajuda...