hao 0 Denunciar post Postado Abril 30, 2008 fala pessoal, estou precisando acrescentar estilos in-line em tags html em textos, vou dar um exemplo para ser mais especifico: tenho uma variavel da seguinte forma: $texto = "<p>Lorem ipsum<p>"; e tenho a seguinte array: $css = array( "p" => "font-size:14px; color:#999;", "h1" => "font-size: 26px;" ); agora de alguma forma precisaria correr a variavel $texto em busca de tags html como o <p> e com a array $css alterar sua forma para a seguinte: "<p style=\"font-size:14px; color:#999;\">Lorem ipsum<p>"; existe alguma expressao regular que faça isso? ou há outra forma para resolver isso? []'s http://forum.imasters.com.br/public/style_emoticons/default/grin.gif Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Abril 30, 2008 Faça assim: echo "<p style=\"" . $css['p'] . "\">Texto</p>"; É isso que você quer? []s Beraldo Compartilhar este post Link para o post Compartilhar em outros sites
hao 0 Denunciar post Postado Abril 30, 2008 Faça assim: echo "<p style=\"" . $css['p'] . "\">Texto</p>"; É isso que você quer? []s Beraldo quase isso, mas queria algo mais automatizado, tipo fiz aqui e ficou bem parecido com que to querendo olha só: $tag = array ( "/<p>/", "/<h1>/" ); $para = array ( "<p style=\"font-size:20px;\">", "<h1 style=\"color:#003366;\">" ); $html = "<p>Lorem ipsum</p>\n"; $html = preg_replace($tag, $para, $html); seria quase isso porem, gostaria de alguma forma nao precisar colocar na assim "<p style=\"font-size:20px;\">" mas apenas mostrar o estilo, dessa forma "font-size:20px;" não sei se ficou claro! mas é isso... Compartilhar este post Link para o post Compartilhar em outros sites
hao 0 Denunciar post Postado Maio 1, 2008 galera, enquanto nao consigo nada melhor, fiz uma classe para me ajudar por enquanto, se tiverem algum conselho para melhorar estamos ai! /* =================================== Classe para colocar estilos inline *********************************** * @example: * $html = "<p><b>Alô</b> Mundo!</p>"; * $objCss = new cssInLine(); * $html = $objCss->change($html); * echo $html; *********************************** */ class cssInLine { // Variaveis var $html; var $tag; var $para; public function __construct () { $this->tag = array( "/<p>/", "/<h1>/", "/<body>/", "/<b>/" ); $this->para = array( $this->inline("p", "font-size:20px; font-family: Trebuchet MS, Georgia;"), $this->inline("h1", "color:#003366; font-variant:small-caps; text-align: center; padding:10px; background: #f7f7f7;"), $this->inline("body", "font-family: Arial, Tahoma;"), $this->inline("b", "color: #cc0000;") ); } public function inline ($seletor, $estilo) { return "<$seletor style=\"{$estilo}\">"; } public function change ($html){ return preg_replace($this->tag, $this->para, $html); } } Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Maio 1, 2008 Estou sem o PHP instalado aqui para testar, mas tente assim: $css = array( "p" => "font-size:14px; color:#999;", "h1" => "font-size: 26px;" ); echo preg_replace("/<([a-z0-9])+?>/i", "{$css['$1'}", $texto); Não sei se aquele $1 no índice do array vai funcionar para casar com a ER. Nunca fiz isso. Assim que eu puder, farei um teste. Veja se funciona. http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif []s Beraldo Compartilhar este post Link para o post Compartilhar em outros sites
hao 0 Denunciar post Postado Maio 2, 2008 Beraldo, quase q da certo! porem eu alterei e ficou assim: $css = array( "p" => "font-size:14px; color:#999;", "h1" => "font-size: 26px;" ); $texto = "<p><b>Olá</b> mundo!</p>\n"; echo preg_replace("/<([a-z0-9])+?>/i", "$css{'$1'}", $texto); e me retornou esse resultado: Array{'p'}Array{'b'}Olá mundo! como não tenho experiencia com ER, o que devo alterar para fazer a troca certa? Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Maio 2, 2008 Não consegui uma forma mais compacta, mas esta funcionou perfeitamente: $css = array( "p" => "font-size:34px; color:#999;", "h1" => "font-size: 46px;" ); $texto = "<h1>Ola</h1>\n<p>mundo!</p>\n<b>negrito</b>"; preg_match_all("/<([a-z0-9]+?)>/i", $texto, $matches); foreach ($matches[1] as $tag) { if (array_key_exists($tag, $css)) { $texto = preg_replace("/<" . $tag . ">/i", "<" . $tag . " style=\"" . $css[$tag] . "\">", $texto); } } echo $texto; []s Beraldo Compartilhar este post Link para o post Compartilhar em outros sites
hao 0 Denunciar post Postado Maio 2, 2008 obrigado Beraldo, funcionou perfeitamente!!! http://forum.imasters.com.br/public/style_emoticons/default/clap.gif Compartilhar este post Link para o post Compartilhar em outros sites