<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>alexmontoanelli &#187; php</title>
	<atom:link href="http://alexm.unetvale.com.br/blog/category/php/feed/" rel="self" type="application/rss+xml" />
	<link>http://alexm.unetvale.com.br/blog</link>
	<description>a place to have some fun..</description>
	<lastBuildDate>Sun, 20 Feb 2011 23:58:13 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1</generator>
		<item>
		<title>And so you code</title>
		<link>http://alexm.unetvale.com.br/blog/2010/12/and-so-you-code/</link>
		<comments>http://alexm.unetvale.com.br/blog/2010/12/and-so-you-code/#comments</comments>
		<pubDate>Tue, 14 Dec 2010 00:34:49 +0000</pubDate>
		<dc:creator>alexm</dc:creator>
				<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://alexm.unetvale.com.br/blog/?p=433</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="350" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="src" value="http://www.youtube.com/v/Eq3CuMDXaPs" /><embed type="application/x-shockwave-flash" width="425" height="350" src="http://www.youtube.com/v/Eq3CuMDXaPs"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://alexm.unetvale.com.br/blog/2010/12/and-so-you-code/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Interceptando funções internas no PHP</title>
		<link>http://alexm.unetvale.com.br/blog/2010/05/interceptando-funcoes-internas-no-php/</link>
		<comments>http://alexm.unetvale.com.br/blog/2010/05/interceptando-funcoes-internas-no-php/#comments</comments>
		<pubDate>Mon, 17 May 2010 16:17:29 +0000</pubDate>
		<dc:creator>alexm</dc:creator>
				<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://alexm.unetvale.com.br/blog/?p=388</guid>
		<description><![CDATA[Olá pessoal, dica rápida de como proceder para interceptar funções build-in no php. Precisei usar para interceptar as chamadas da função mail, em um servidor em produção, para gerar log, de abusos. Para isso precisaremos instalar o modulo runkit, disponível em github.com/padraic/runkit. O procedimento consiste em baixar o pacote via git, com o comando git [...]]]></description>
			<content:encoded><![CDATA[<p>Olá pessoal, dica rápida de como proceder para interceptar funções build-in no php.</p>
<p>Precisei usar para interceptar as chamadas da função mail, em um servidor em produção,<br />
para gerar log, de abusos.</p>
<p>Para isso precisaremos instalar o modulo runkit, disponível em <a href="http://github.com/padraic/runkit">github.com/padraic/runkit</a>.</p>
<p>O procedimento consiste em baixar o pacote via git, com o comando<br />
git clonse git://github.com/padraic/runkit.git, executar um phpize no diretório, depois<br />
o trio ./configure &amp;&amp;  make &amp;&amp; make install</p>
<p>Feito isso basta configurar o php.ini para subir o modulo com as seguintes linhas:</p>
<p>extension=runkit.so<br />
runkit.internal_override=1</p>
<p>A primeira linha carrega o módulo e a segunda, diz que vamos sobre-escrever funções internas no php.</p>
<p>Depois basta reiniciar o apache.</p>
<p>O script para interceptar fica mais ou menos assim:</p>
<pre>//copiamos a funcao interna mail para o nome de intmail
@runkit_function_copy("mail", "intmail");

//removemos a funcao original mail
@runkit_function_remove("mail");
//atribuimos a funcao umail para o nome mail
@runkit_function_copy("umail", "mail"); 

//criamos a assinatura da funcao identica a original do mail
function umail($to,
               $subject,
               $message,
               $additional_headers = null,
               $additional_parameters = null) {</pre>
<pre>      //executamos aqui nossas rotinas
      //como por exemplo criar logs

      //chamaos a funcao mail original com os paramentros passados
      if (ini_get('safe_mode') === false){
        $x =  intmail($to,
                      $subject,
                      $message,
                      $additional_headers,
                      $additional_parameters);
      } else {
        $x =  intmail($to,
                      $subject,
                      $message,
                      $additional_headers);
      }

      return $x;
}</pre>
<p>Para esse scritpt ter um funcionamento global, é preciso adiciona-lo na configuração auto_prepend_file  para<br />
carrega-lo automaticamente em toda página.</p>
<p>Por hora é isso.</p>
<p>Abraços</p>
]]></content:encoded>
			<wfw:commentRss>http://alexm.unetvale.com.br/blog/2010/05/interceptando-funcoes-internas-no-php/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Gerando relatórios com Jasper no PHP &#8211; mini how-to</title>
		<link>http://alexm.unetvale.com.br/blog/2010/04/gerando-relatorios-com-jasper-no-php-mini-how-to/</link>
		<comments>http://alexm.unetvale.com.br/blog/2010/04/gerando-relatorios-com-jasper-no-php-mini-how-to/#comments</comments>
		<pubDate>Tue, 13 Apr 2010 12:01:03 +0000</pubDate>
		<dc:creator>alexm</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[ireport]]></category>
		<category><![CDATA[jasper]]></category>

		<guid isPermaLink="false">http://alexm.unetvale.com.br/blog/?p=382</guid>
		<description><![CDATA[Para quem tem a necessidade de gerar relatórios, o php não possui nenhuma ferramenta a nível da já  consagrada Jasper, disponível no Java. A solução então é usar o projeto phpJavaBridge para criar uma ponte entre o mundo Java e PHP e assim conseguir conversar com o Jasper. Vamos lá para a receita, lembre-se que [...]]]></description>
			<content:encoded><![CDATA[<p>Para quem tem a necessidade de gerar relatórios, o php não possui nenhuma ferramenta a nível da já  consagrada<br />
<a href="http://jasperforge.org/projects/jasperreports">Jasper</a>, disponível no Java.</p>
<p>A solução então é usar o projeto phpJavaBridge para criar uma ponte entre o mundo Java e PHP e assim conseguir conversar<br />
com o Jasper.</p>
<p>Vamos lá para a receita, lembre-se que vocẽ precisar ter um certo conhecimento para fazer isso e saber oque está acontencedo,<br />
ter uma certa intimidade com Java e Tomcat e outros.</p>
<p>Primeiro você vai precisar de um servidor web  tomcat rodando -  vários how-to podem ser encontrados no google;</p>
<p>Depois disso baixe o  phpjavabridge (binário), disponível em http://php-java-bridge.sourceforge.net/pjb/download.php,e<br />
baixe tambŕm o Java.inc, disponível na mesma página.</p>
<p>Copie o .war do phpjavabridge (JavaBridge.war) para a pasta webapps do tomcat para fazer o deploy da aplicação.</p>
<p>Acesse então: http://localhost:8080/JavaBridge e se tudo der certo você verá a tela de boas vindas do phpjavabridge.</p>
<p>Feito isso baixe o jasper <a href="http://sourceforge.net/projects/jasperreports/files/jasperreports/JasperReports%203.7.2/jasperreports-3.7.2-project.tar.gz/download">aqui</a> e após descompactar copie os  *.jar para a basta WEB-INF/lib dentro da pasta do JavaBridge<br />
que esta no webapps do tomcat.</p>
<p><a href="http://alexm.unetvale.com.br/blog/wp-content/uploads/testarJasper.zip">Aqui</a> estão uns scripts para testar a a aplicação no console (linux), já com um modelo básico de relatório feito no <a href="http://jasperforge.org/projects/ireport">iReport</a><br />
usando csv para backend de dados.</p>
<p>Você pode usar xml e até conexão direta com o banco de dados como origem dos dados.</p>
<p><strong>Nota: todos os paths são relativos ao tomcat e não ao php.</strong></p>
<p>Aconselho a ler e reler muito a documentação que se encontra no site.</p>
<p>Mais uma vez digo, essa tarefa não é para iniciantes, então tenha muita paciência.</p>
<p>Abraços</p>
]]></content:encoded>
			<wfw:commentRss>http://alexm.unetvale.com.br/blog/2010/04/gerando-relatorios-com-jasper-no-php-mini-how-to/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ZendFramework &#8211; Usando parâmentros nas Actions</title>
		<link>http://alexm.unetvale.com.br/blog/2009/10/zendframework-usando-paramentros-nas-actions/</link>
		<comments>http://alexm.unetvale.com.br/blog/2009/10/zendframework-usando-paramentros-nas-actions/#comments</comments>
		<pubDate>Sat, 17 Oct 2009 23:29:30 +0000</pubDate>
		<dc:creator>alexm</dc:creator>
				<category><![CDATA[outros]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://alexm.unetvale.com.br/blog/?p=348</guid>
		<description><![CDATA[Para quem usa o ZendFramework, em modo MVC, sabe que o modo para pegar uma váriavel  passada por GET/POST/COOKIE, deve ser realizada através dos métodos: getRequest()-&#62;getParam(&#8216;nome_da_variavel&#8217;), do objeto Zend_Coontroller_Action. Abaixo mostro uma implementação, que extende a classe Zend_Action para que seja usado os parâmentros no corpo da função. Hoje você utiliza da seguinte forma: &#60;?php [...]]]></description>
			<content:encoded><![CDATA[<p>Para quem usa o ZendFramework, em modo MVC, sabe que o modo para pegar uma váriavel  passada por GET/POST/COOKIE, deve ser realizada através dos métodos: getRequest()-&gt;getParam(&#8216;nome_da_variavel&#8217;), do objeto Zend_Coontroller_Action.</p>
<p>Abaixo mostro uma implementação, que extende a classe Zend_Action para que seja usado os parâmentros no corpo da função.</p>
<p>Hoje você utiliza da seguinte forma:</p>
<pre>&lt;?php
class IndexController extends Zend_Controller_Action {

public function indexAction(){

//obterá o parâmentro GET/POST teste
 echo $this-&gt;getRequest()-&gt;getParam('teste');

}

}</pre>
<p>A nova forma será:</p>
<pre>&lt;?php
class IndexController extends My_Action {

public function indexAction(string $teste){

//obterá o parâmentro GET/POST teste
 echo $teste;

}

}</pre>
<p>Abaixo a classe My_Action.</p>
<p>Abraços</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;</p>
<pre>&lt;?php                                                                                                                                  
/**                                                                                                                                    
 * Map request parameters to action method                                                                                             
 * @author Albert Varaksin                                                                                                             
 * @licence public domain                                                                                                              
 */                                                                                                                                    
class My_Action extends Zend_Controller_Action                                                                           
{                                                                                                                                      
 /**                                                                                                                                
 * Dispatch the requested action                                                                                                   
 *                                                                                                                                 
 * @param string $action Method name of action                                                                                     
 * @return void                                                                                                                    
 */                                                                                                                                
 public function dispatch($action)                                                                                                  
 {                                                                                                                                  
 // Notify helpers of action preDispatch state                                                                                  
 $this-&gt;_helper-&gt;notifyPreDispatch();                                                                                           

 $this-&gt;preDispatch();
 if ($this-&gt;getRequest()-&gt;isDispatched()) {
 if (null === $this-&gt;_classMethods) {  
 $this-&gt;_classMethods = get_class_methods($this);
 }                                                   

 // preDispatch() didn't change the action, so we can continue
 if ($this-&gt;getInvokeArg('useCaseSensitiveActions')
|| in_array($action, $this-&gt;_classMethods)) {
 if ($this-&gt;getInvokeArg('useCaseSensitiveActions')) {                                       
 trigger_error('Using case sensitive actions without word separators is deprecated;
please do not rely on this "feature"');
 }                                                                                                                             

 $reflMethod = new Zend_Reflection_Method($this, $action);                                                                     
 $actionParams = $reflMethod-&gt;getParameters();                                                                                 
 $requestParams = $this-&gt;_request-&gt;getParams();                                                                                
 $args = array ();                                                                                                             
 foreach ($actionParams as $param)
 {
 // get parameter type
 if (($reflClass = $param-&gt;getClass()) instanceof Zend_Reflection_Class) {
 $type = $reflClass-&gt;getName();
 } else if ($param-&gt;isArray()) {
 $type = 'array';
 } else {
 $type = $param-&gt;getType();
 }

 // get passed parameter
 $name = $param-&gt;getName();
 if (isset($requestParams[$name])) {
 $value = $requestParams[$name];
 } else if ($param-&gt;isDefaultValueAvailable()) {
 $value = $param-&gt;getDefaultValue();
 $type = '';
 } else {
 $docBlock = $reflMethod-&gt;getDocblock();
 if (($tagRefl = $docBlock-&gt;getTag("require_$name"))
instanceof Zend_Reflection_Docblock_Tag) {
 $tryClass = trim($tagRefl-&gt;getDescription());
 if (class_exists($tryClass, true))
 throw new $tryClass("Missing value for argument $name");
 else
 throw new Zend_Controller_Action_Exception("Missing value for argument $name");
 }
 $value = null;
 }

 // fix value type
 $basicTypes = array(
 'int', 'integer', 'bool', 'boolean',
 'string', 'array', 'object',
 'double', 'float'
 );
 if (in_array($type, $basicTypes)) settype($value, $type);
 else if (strlen($type) &amp;&amp; class_exists($type, true)) $value = new $type($value);

 $args[] = $value;
 }
 // dispatch the action
 call_user_func_array(array($this, $action), $args);
 } else {
 $this-&gt;__call($action, array());
 }
 $this-&gt;postDispatch();
 }

 // whats actually important here is that this action controller is
 // shutting down, regardless of dispatching; notify the helpers of this
 // state
 $this-&gt;_helper-&gt;notifyPostDispatch();
 }
}</pre>
]]></content:encoded>
			<wfw:commentRss>http://alexm.unetvale.com.br/blog/2009/10/zendframework-usando-paramentros-nas-actions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Threads no PHP</title>
		<link>http://alexm.unetvale.com.br/blog/2009/08/threads-no-php/</link>
		<comments>http://alexm.unetvale.com.br/blog/2009/08/threads-no-php/#comments</comments>
		<pubDate>Sat, 29 Aug 2009 21:32:38 +0000</pubDate>
		<dc:creator>alexm</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[pcntl]]></category>
		<category><![CDATA[processos]]></category>
		<category><![CDATA[threads]]></category>

		<guid isPermaLink="false">http://alexm.unetvale.com.br/blog/2009/08/threads-no-php/</guid>
		<description><![CDATA[Exemplo básico de utilização de threads no PHP $pid = pcntl_fork(); if ($pid == -1) { die('Erro ao lançar thread'); } else if ($pid) { // thread principal //aguardamos a thread child terminar pcntl_wait($status); echo &#34;Processo child terminado\n&#34;; exit(0); } else { //thread secundario //mudamos para um usuário não privilegiado posix_setuid(1000); posix_setgid(1000); //colocamos a thread [...]]]></description>
			<content:encoded><![CDATA[<p>Exemplo básico de utilização de threads no PHP</p>
<pre>$pid = pcntl_fork();

if ($pid == -1) {

     die('Erro ao lançar thread');

} else if ($pid) {

     // thread principal
     //aguardamos a thread child terminar
     pcntl_wait($status); 

     echo &quot;Processo child terminado\n&quot;;

     exit(0);

} else {

     //thread secundario
     //mudamos para um usuário não privilegiado
     posix_setuid(1000);
     posix_setgid(1000);

     //colocamos a thread para fazer algo,
     //ate que uma condição seja satisfeita e ela termine
	$i=0;
	while(true){	

           if (file_exists('/tmp/stop')){
		echo &quot;Terminado thread&quot;;
		exit(0);
	   }

	   echo &quot;Iteração : &quot;. ++$i . &quot;\n&quot;;
	   sleep(2);

	}

}</pre>
<p>&#160;</p>
<p>Mais informações <a href="http://br2.php.net/manual/en/book.pcntl.php">aqui</a>.</p>
<p>Abraços e até.</p>
]]></content:encoded>
			<wfw:commentRss>http://alexm.unetvale.com.br/blog/2009/08/threads-no-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Criptografia RSA em PHP em poucas linhas &#8211; the simple way</title>
		<link>http://alexm.unetvale.com.br/blog/2009/07/criptografia-rsa-em-simples-passos/</link>
		<comments>http://alexm.unetvale.com.br/blog/2009/07/criptografia-rsa-em-simples-passos/#comments</comments>
		<pubDate>Wed, 22 Jul 2009 23:47:14 +0000</pubDate>
		<dc:creator>alexm</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[criptografia]]></category>
		<category><![CDATA[rsa]]></category>

		<guid isPermaLink="false">http://alexm.unetvale.com.br/blog/2009/07/criptografia-rsa-em-simples-passos/</guid>
		<description><![CDATA[Abaixo descrevo os passos para implantar um sistema de chaves baseada em RSA,para que sua aplicação posso trocar dados de forma transparente. Utilizei o procedimento para assinar um cookie,&#160; na máquina do usuário e depois validá-lo, em um sistema de auto-login. Você vai precisar do arquivo RSA.php, disponível em http://scripts.ringsworld.com/development-tools/rsa1.3/: Após isso, vamos&#160; passar por [...]]]></description>
			<content:encoded><![CDATA[<p>Abaixo descrevo os passos para implantar um sistema de chaves baseada em RSA,para que sua aplicação posso trocar dados de forma transparente.</p>
<p>Utilizei o procedimento para assinar um cookie,&#160; na máquina do usuário e depois validá-lo, em um sistema de auto-login.</p>
<p>Você vai precisar do arquivo RSA.php, disponível em <a href="http://scripts.ringsworld.com/development-tools/rsa1.3/">http://scripts.ringsworld.com/development-tools/rsa1.3/</a>: </p>
<p>Após isso, vamos&#160; passar por tres etapas, a geração das chaves, a assinatura dos dados, e por úlitmo a decodificação dos dados assinados.</p>
<p>Para gerar um par de chaves, e encriptar e decriptar os dados, usaremos o bloco de código abaixo comentado como exemplo.</p>
<pre>&lt;?php
require_once ‘RSA.php’;

//Iremos ter em $keys, um par de chaves, a pública e a privada,a
//a qual você deverá guardar para poder decriptar os dados mais tarde.
$keys = generate_keys ();

//com a chave sgerada iremos assinar uma string com a
//chave pública para futura comparação
$string_secreta = &quot;Minha informação sigilosa&quot;;
$encoded = rsa_encrypt ($string_secreta,&#160; $keys[1],&#160; $keys[0]); 

//OK, nossa ‘informação sigilosa’ esta agora encriptada,
//e pode ser distribuida,porem apenas quem tiver o valor de $keys
//poderá ver o conteudo, entao é importante manter a chave geradada
//em um local seguro

//Podemos agora decriptar o valor,
//e verificar se tudo ocorreu certinho:
$decoded = rsa_decrypt($encoded,&#160; $keys[2],&#160; $keys[0]);
$result = ($decoded === $message);

//$result será um boolean onde se a mensagem
//decodifica foi igual a mensagem original
// retornará true } else { retornará false; }</pre>
<p>&#160;</p>
<p>Abraços</p>
]]></content:encoded>
			<wfw:commentRss>http://alexm.unetvale.com.br/blog/2009/07/criptografia-rsa-em-simples-passos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ativando o Xdebug no ZendStudio</title>
		<link>http://alexm.unetvale.com.br/blog/2009/03/ativando-o-xdebug-no-zendstudio/</link>
		<comments>http://alexm.unetvale.com.br/blog/2009/03/ativando-o-xdebug-no-zendstudio/#comments</comments>
		<pubDate>Mon, 16 Mar 2009 17:01:57 +0000</pubDate>
		<dc:creator>alexm</dc:creator>
				<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://alexm.unetvale.com.br/blog/?p=288</guid>
		<description><![CDATA[Hello all. Passos para usar o XDebug no ZendStudio4Eclipse. 1 -&#62; Entre na pasta onde esta instalado o ZendStudio (/usr/local/Zend/ZendStudioForEclipse-6.1.1/) 2 -&#62; Entre na Pasta plugins &#8211; cd plugins 3 -&#62; Crie uma pasta chamada &#8216;disabled&#8217; &#8211; mkdir disabled 4 -&#62; Mova todos os arquivos com.zend.php.debug.* para a pasta disable &#8211; mv com.zend.php.debug.* disabled/ 5 [...]]]></description>
			<content:encoded><![CDATA[<p>Hello all.</p>
<p>Passos para usar o <a title="Xdebug" href="http://www.xdebug.org/">XDebug</a> no <a title="ZendStudio" href="http://www.zend.com/en/products/studio/">ZendStudio4Eclipse</a>.</p>
<p>1 -&gt; Entre na pasta onde esta instalado o ZendStudio (/usr/local/Zend/ZendStudioForEclipse-6.1.1/)<br />
2 -&gt; Entre na Pasta plugins &#8211; cd plugins<br />
3 -&gt; Crie uma pasta chamada &#8216;disabled&#8217; &#8211; mkdir disabled<br />
4 -&gt; Mova todos os arquivos com.zend.php.debug.* para a pasta disable &#8211; mv com.zend.php.debug.* disabled/<br />
5 -&gt; Inicie uma nova instancia do Zend limpando as configurações default &#8211; ../Zend -clean<br />
6 -&gt; Fecha e Abra novamente o Zend, e você irá ver em preferencia/php/debug o Xdebug com um dos modos disponiveis para debug.</p>
<p>Não esqueça de setar xdebug.remote_enable para 1 no php.ini.</p>
<p>Abraços</p>
]]></content:encoded>
			<wfw:commentRss>http://alexm.unetvale.com.br/blog/2009/03/ativando-o-xdebug-no-zendstudio/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Easter Eggs no PHP</title>
		<link>http://alexm.unetvale.com.br/blog/2008/10/easter-eggs-no-php/</link>
		<comments>http://alexm.unetvale.com.br/blog/2008/10/easter-eggs-no-php/#comments</comments>
		<pubDate>Tue, 28 Oct 2008 01:42:48 +0000</pubDate>
		<dc:creator>alexm</dc:creator>
				<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://alexm.unetvale.com.br/blog/2008/10/easter-eggs-no-php/</guid>
		<description><![CDATA[Abaixo seguem alguns eggs para o PHP. Acesse um url php passando como variavel uma das strings abaixo, e você verá o poder delas. -&#62; PHPB8B5F2A0-3C92-11d3-A3A9-4C7B08C10000 -&#62; PHPE9568F34-D428-11d2-A769-00AA001ACF42 -&#62; PHPE9568F35-D428-11d2-A769-00AA001ACF42 -&#62; PHPE9568F36-D428-11d2-A769-00AA001ACF42 Aqui vai o exemplo de um url: http://php.net/?=PHPE9568F36-D428-11d2-A769-00AA001ACF42 Abraços]]></description>
			<content:encoded><![CDATA[<p>Abaixo seguem alguns eggs para o <a href="http://www.php.net">PHP</a>.</p>
<p>Acesse um <a href="http://www.php.net">url</a> php passando como variavel uma das strings abaixo, e você verá o poder delas.</p>
<p>-&gt; PHPB8B5F2A0-3C92-11d3-A3A9-4C7B08C10000 </p>
<p>-&gt; PHPE9568F34-D428-11d2-A769-00AA001ACF42 </p>
<p>-&gt; PHPE9568F35-D428-11d2-A769-00AA001ACF42 </p>
<p>-&gt; PHPE9568F36-D428-11d2-A769-00AA001ACF42 </p>
<p>Aqui vai o exemplo de um url: </p>
<blockquote><p><a href="http://php.net/?=PHPE9568F36-D428-11d2-A769-00AA001ACF42">http://php.net/?=PHPE9568F36-D428-11d2-A769-00AA001ACF42</a></p>
</blockquote>
<p>Abraços</p>
]]></content:encoded>
			<wfw:commentRss>http://alexm.unetvale.com.br/blog/2008/10/easter-eggs-no-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP Encontrar/ Extrair Substrings</title>
		<link>http://alexm.unetvale.com.br/blog/2008/10/php-encontrar-extrair-substrings/</link>
		<comments>http://alexm.unetvale.com.br/blog/2008/10/php-encontrar-extrair-substrings/#comments</comments>
		<pubDate>Sat, 25 Oct 2008 19:45:00 +0000</pubDate>
		<dc:creator>alexm</dc:creator>
				<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://alexm.unetvale.com.br/blog/2008/10/php-encontrar-extrair-substrings/</guid>
		<description><![CDATA[Uma tarefa bastante comum em PHP a encontrar e substituir partes de string por outras. No PHP temos vários funções para manipulação de strings, entre as mais usadas e simples temos as strpos(), strstr(), substr() e substr_replace(). strpos() : Encontra a primeira ocorrência de uma string e retorna sua posição. Exemplo: $pos = strpos(‘abcde’, ‘de’); [...]]]></description>
			<content:encoded><![CDATA[<p>Uma tarefa bastante comum em <a href="http://php.net">PHP</a> a encontrar e substituir partes de string por outras.</p>
<p>No <a href="http://php.net">PHP</a> temos vários funções para manipulação de strings, entre as mais usadas e simples temos as <a href="http://www.php.net/strpos">strpos()</a>, <a href="www.php.net/strstr">strstr()</a>, <a href="http://www.php.net/substr">substr()</a> e <a href="http://www.php.net/substr_replace">substr_replace()</a>.</p>
<p><strong>strpos()</strong> : Encontra a primeira ocorrência de uma string e retorna sua posição.</p>
<p>Exemplo: $pos = strpos(‘abcde’, ‘de’); //irá retornar 3</p>
<p><strong>strstr()</strong> : Encontra a primeira ocorrência de uma string e retorna tudo apartir dela.</p>
<p>Exemplo: $string = strstr(<a href="mailto:&lsquo;email@dominio.com.br">‘email@dominio.com.br</a>, <a href="mailto:&lsquo;@&rsquo;">‘@’</a>); //irá retornar @dominio.com.br</p>
<p><strong>substr()</strong> : Retorna uma parte expecifica da string</p>
<p>Exemplo: $string = substr(‘abcdef, 1, 3); //ira retornar ‘bcd’</p>
<p>Para mais detalhes veja <a href="http://br2.php.net/manual/en/ref.strings.php">aqui</a>.</p>
<p>Abraços</p>
]]></content:encoded>
			<wfw:commentRss>http://alexm.unetvale.com.br/blog/2008/10/php-encontrar-extrair-substrings/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Resolvendo problemas de charset enconding com LDAP e PHP</title>
		<link>http://alexm.unetvale.com.br/blog/2008/10/resolvendo-problemas-de-charset-enconding-com-ldap-e-php/</link>
		<comments>http://alexm.unetvale.com.br/blog/2008/10/resolvendo-problemas-de-charset-enconding-com-ldap-e-php/#comments</comments>
		<pubDate>Thu, 09 Oct 2008 00:51:00 +0000</pubDate>
		<dc:creator>alexm</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[ldap]]></category>

		<guid isPermaLink="false">http://alexm.unetvale.com.br/blog/?p=224</guid>
		<description><![CDATA[Estamos vivos. Depois de uma breve pausa para a política e outras coisinhas estamos de volta. Para não perder a viagem aqui vai uma dica para quem tá com problemas de encoding entre ldap e PHP. Se você tá passando por problemas ao gravar caracteres acentuados em uma base ldap, e ao mostrar eles, você [...]]]></description>
			<content:encoded><![CDATA[<p>Estamos vivos.</p>
<p>Depois de uma breve pausa para a política e outras coisinhas estamos de volta.</p>
<p>Para não perder a viagem aqui vai uma dica para quem tá com problemas de encoding entre <a href="http://www.openldap.org">ldap </a>e <a href="http://php.net">PHP</a>.</p>
<p>Se você tá passando por problemas ao gravar caracteres acentuados em uma base <a href="http://www.openldap.org">ldap</a>, e ao mostrar eles, você vê um &#8216;?&#8217; ou outros caracteres estranhos no local do original, basta usar a função <a href="http://php.net/utf8_encode">utf8_encode </a>antes de gravar os valores no banco, (<a href="http://php.net/ldap_add">ldap_add</a>), e quando for recuperar (<a href="http://php.net/ldap_search">ldap_search</a>) os valores do banco, utilizar <a href="http://php.net/utf8_decode">utf8_decode </a>para converte-los novamente e exibir normalmente.</p>
<p>Logo novidades por aqui. Aguardem!</p>
<p>Abraços</p>
]]></content:encoded>
			<wfw:commentRss>http://alexm.unetvale.com.br/blog/2008/10/resolvendo-problemas-de-charset-enconding-com-ldap-e-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

