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 a todos tenhno uma duvida simples que sempre resolvo com explore.... mas gostaria de saber se existe alguma forma mais inteligente de fazer. Seque exemplo abaixo
$meu_texto = "Estou testando minha tag está [tag]tudo[/tag] ok".
Tem como eu dar um replace no que esta entre as tags pegando pela tag?
Abraços
Marco
Se não for pedir muito posta os links ai pois pesquisei no forum com esses campos e nada retornou tb ja procurei alguma coisa na web..... e exatamente o que quero não achei..
marco
Procura por formas de criar um BBCode parser (analisador).
Será que ninguem consegue so postar a expressao regular....
estou tentando isso! mas mostra apenas o que esta dentro da tag eu queria subistituir
$texto = "Este é meu testo de teste [ref]1258[/ref] está é minha referencia";
preg_match("/\[ref\]\s*((\s|.)+?)\s*\[\/ref\]\s*/i",$texto);
$s = $output[1];
echo $s;É mais ou menos isso o que você quer?
<?php
function BBCode($string){
/*
*
* . => qualquer tipo de caractere
* * => quantidade indeterminada
* ? => aceitar mais de uma palavra (opicional)
* i => InSeNsItIvE
*
*/
$values = array(
'@\[b\](.*?)\[\/b\]@i' => '<b>$1</b>',
'@\[i\](.*?)\[\/i\]@i' => '<em>$1</em>',
'@\[u\](.*?)\[\/u\]@i' => '<u>$1</u>',
'@\[img\=\"(.*?)\"\](.*?)\[\/img\]@i' => '<img src="$1" alt="$2" />',
'@\[link\=\"(.*?)\"\](.*?)\[\/link\]@i' => '<a href="$1">$2</a>'
);
return preg_replace(array_keys($values), array_values($values), $string);
}
$texto = "Este é meu testo de teste [b]1258[/b] está é minha referencia";
echo BBCode($texto);
?>
:thumbsup:
Maravilha so esta dando um erro
quando eu coloco link ou img não funciona...
<?php
function BBCode($string){
/*
*
* . => qualquer tipo de caractere
* * => quantidade indeterminada
* ? => aceitar mais de uma palavra (opicional)
* i => InSeNsItIvE
*
*/
$values = array(
'@\[b\](.*?)\[\/b\]@i' => '<b>$1</b>',
'@\[i\](.*?)\[\/i\]@i' => '<em>$1</em>',
'@\[u\](.*?)\[\/u\]@i' => '<u>$1</u>',
'@\[img\=\"(.*?)\"\](.*?)\[\/img\]@i' => '<img src="$1" alt="$2" />',
'@\[link\=\"(.*?)\"\](.*?)\[\/link\]@i' => '<a href="$1">$2</a>'
);
return preg_replace(array_keys($values), array_values($values), $string);
}
$texto = "Este é meu testo de teste [link]http://www.imasters.com[/link] está é minha referencia";
echo BBCode($texto);
?>Tem as características de uma tag HTML normal, basta olha as regras da expressão no array $values:
<?php
function BBCode($string){
$values = array(
'@\[b\](.*?)\[\/b\]@i' => '<b>$1</b>',
'@\[i\](.*?)\[\/i\]@i' => '<em>$1</em>',
'@\[u\](.*?)\[\/u\]@i' => '<u>$1</u>',
'@\[img\=\"(.*?)\"\](.*?)\[\/img\]@i' => '<img src="$1" alt="$2" />',
'@\[link\=\"(.*?)\"\](.*?)\[\/link\]@i' => '<a href="$1">$2</a>'
);
return preg_replace(array_keys($values), array_values($values), $string);
}
$texto = 'Este é meu texto de teste [link="http://www.imasters.com.br"]http://www.imasters.com.br[/link] está é minha referência';
echo BBCode($texto);
?>
aqui mesmo no forum tem alguns topicos relacionados com exemplios usando ER ( expressão regular ) ou regex do termo original em ingles
basicamente procure por bbtag, bbode, algo do gênero.