Jump to content


Photo

Problema Com Str_replace


  • Faça o login para participar
4 replies to this topic

#1 dddidan

dddidan

    Ativo

  • Usuários
  • 381 posts
  • Sexo:Masculino
  • Localidade:Taboão da Serra - SP

Posted 16/07/2009, 12:25

Bom dia pessoal =D
seguintes... arranjei um probleminha bem legal aqui...
No site, tem um menuzinho chamado "videos", nele, são exibidos alguns videos(não diga), que necessitam ser redimensionados.
Entããão... fiz isso:

<?php
		conecta();
		$sql = mysql_query("SELECT * FROM videos LIMIT 5");
		while($r=mysql_fetch_array($sql)){
			$codigo="{$r['Codigo']}";
			$codigo = str_replace('/width=[0-9]+/i', 'width=247', $codigo);//largura
			$codigo = str_replace('/height=[0-9]+/i', 'height=198', $codigo);//altura
			echo "$codigo";
		}		
		?>

mas não me retorna nada... fica lá... o espaço vazio...
tentei tirar tudo e exibir só o código... ai funciona...

alguem consegue dar uma luz?

vlw =)
Mais vale um Dev C++ na mão do que dois codeblocks voando

PHP - ||||||||||||||| MySql - |||||||||||||||
C/C++ - ||||||||||||||| Oracle - |||||||||||||||
PERL - |||||||||||||||

#2 Ferlouko x)

Ferlouko x)

    Normal

  • Usuários
  • 72 posts
  • Sexo:Masculino
  • Localidade:Guararapes
  • Interesses:PHP, OOP, DESIGN PATTERNS, mySQL, XML, (X)HTML, CSS, TABLELESS, PHP-GTK, JAVA, C++.

Posted 16/07/2009, 12:42

str_replace() não tem suporte a Expressões Regulares, ou seja str_replace() vai substituir literalmente '/width=[0-9]+/i' e '/height=[0-9]+/i', use preg_replace(), se não funcionar poste a estrutura do código à ser casado.... (no caso um Ex do codigo para add o flash)


Outra coisa, percebi que os códigos vem do db, pq vc não usa uma tabela que tenha as estruturas com campos de 'width' e 'height' e 'url' ao invés de uma estrutura com código 'html'. Foi só opinião, mas creio ser o mais certo à fazer, já que há 'x' maneiras de se inserir um flash e diminuiria grandemente o tempo de acesso ao banco.


[]'s

flws

Edição feita por: Ferlouko x), 16/07/2009, 12:45.

<?php
/**
* @author. . .Fernando Rodrigo Cardoso < ferlouko (at) gmail.com >
* @desc. . . .Desenv. PHP, (X)HTML, CSS, JS E AJAX, aprendiz JAVA, aprendiz C/C++ (...)
*/
?>

#3 dddidan

dddidan

    Ativo

  • Usuários
  • 381 posts
  • Sexo:Masculino
  • Localidade:Taboão da Serra - SP

Posted 16/07/2009, 13:49

Agora aparece o video... mas não redimensiona...

codigo do video:

<object width="320" height="265"><param name="movie" value="http://www.youtube.com/v/o9k2hPJTUug&hl=pt-br&fs=1&"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/o9k2hPJTUug&hl=pt-br&fs=1&" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="320" height="265"></embed></object>
e alterei o código acima pelo seguinte:
<?php
		conecta();
		$sql = mysql_query("select * from videos LIMIT 5");
		while($r=mysql_fetch_array($sql)){
			$codigo="{$r['Codigo']}";
			$codigo = preg_replace('/width=[0-9]+/i', 'width=247', $codigo);//largura
			$codigo = preg_replace('/height=[0-9]+/i', 'height=198', $codigo);//altura
			echo "$codigo";
		}		
		?>

Outra coisa, percebi que os códigos vem do db, pq vc não usa uma tabela que tenha as estruturas com campos de 'width' e 'height' e 'url' ao invés de uma estrutura com código 'html'. Foi só opinião, mas creio ser o mais certo à fazer, já que há 'x' maneiras de se inserir um flash e diminuiria grandemente o tempo de acesso ao banco.

Não fiz isso porque nem passou pela minha cabeça =x... mas vai ter videos de varias fontes, entãoseria meio inviavel usar o mesmo embed
Mais vale um Dev C++ na mão do que dois codeblocks voando

PHP - ||||||||||||||| MySql - |||||||||||||||
C/C++ - ||||||||||||||| Oracle - |||||||||||||||
PERL - |||||||||||||||

#4 Ferlouko x)

Ferlouko x)

    Normal

  • Usuários
  • 72 posts
  • Sexo:Masculino
  • Localidade:Guararapes
  • Interesses:PHP, OOP, DESIGN PATTERNS, mySQL, XML, (X)HTML, CSS, TABLELESS, PHP-GTK, JAVA, C++.

Posted 16/07/2009, 18:34

width="320" height="265"

Você esqueceu das aspas, a ER está casando apenas Ex : width=320 e não width="320"
Fiz outra mudança tb, que aceita entre aspas simples, Segue abaixo :
$var = preg_replace('/width=("[0-9]+"|\'[0-9]+\')/i','width="247"',$var);
$var = preg_replace('/heigh=("[0-9]+"|\'[0-9]+\')/i','height="198"',$var);

[]'s

flws
<?php
/**
* @author. . .Fernando Rodrigo Cardoso < ferlouko (at) gmail.com >
* @desc. . . .Desenv. PHP, (X)HTML, CSS, JS E AJAX, aprendiz JAVA, aprendiz C/C++ (...)
*/
?>

#5 dddidan

dddidan

    Ativo

  • Usuários
  • 381 posts
  • Sexo:Masculino
  • Localidade:Taboão da Serra - SP

Posted 16/07/2009, 21:13

Aaaaaah errinho basico ^^"
Ainda não me acostumei muito com as er's...

Vlw =D
Mais vale um Dev C++ na mão do que dois codeblocks voando

PHP - ||||||||||||||| MySql - |||||||||||||||
C/C++ - ||||||||||||||| Oracle - |||||||||||||||
PERL - |||||||||||||||




0 user(s) are reading this topic

0 membro(s), 0 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq