<?xml version="1.0" encoding="iso-8859-1"?><!-- generator="wordpress/1.5.1.3" -->
<rss version="2.0" 
	xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
	<title>Comments on: Llamadas dinámicas a funciones y métodos en PHP</title>
	<link>http://www.eslomas.com/index.php/archives/2005/12/22/llamadas-dinamicas-funciones-metodos-php/</link>
	<description>Informática, internet y algo del mundo real</description>
	<pubDate>Sat, 05 Jul 2008 23:27:28 +0000</pubDate>
	<generator>http://wordpress.org/?v=1.5.1.3</generator>

	<item>
		<title>by: Maria</title>
		<link>http://www.eslomas.com/index.php/archives/2005/12/22/llamadas-dinamicas-funciones-metodos-php/#comment-27818</link>
		<pubDate>Tue, 09 Oct 2007 14:57:30 +0000</pubDate>
		<guid>http://www.eslomas.com/index.php/archives/2005/12/22/llamadas-dinamicas-funciones-metodos-php/#comment-27818</guid>
					<description>Las dos primeras lineas:
$fname = ‘pdf2txt’;
$fname();

no venian el el codigo, las he puesto yo para probar...seguro que no valen.

saludos</description>
		<content:encoded><![CDATA[	<p>Las dos primeras lineas:<br />
$fname = ‘pdf2txt’;<br />
$fname();</p>
	<p>no venian el el codigo, las he puesto yo para probar&#8230;seguro que no valen.</p>
	<p>saludos
</p>
]]></content:encoded>
				</item>
	<item>
		<title>by: Maria</title>
		<link>http://www.eslomas.com/index.php/archives/2005/12/22/llamadas-dinamicas-funciones-metodos-php/#comment-27814</link>
		<pubDate>Tue, 09 Oct 2007 14:53:53 +0000</pubDate>
		<guid>http://www.eslomas.com/index.php/archives/2005/12/22/llamadas-dinamicas-funciones-metodos-php/#comment-27814</guid>
					<description>Hola Patxi, necesito un poco de ayuda...
He encontrado este programa que pasa un .pdf a texto llano (justo lo que yo necesito). He creado un proyecto y un archivo php en eclipse y he copiado lo siguiente:

$fname = 'pdf2txt';
$fname();
function pdf2txt($filename){ 

    $data = getFileData($filename); 
    
    $s=strpos($data,&quot;%&quot;)+1; 
    
    $version=substr($data,$s,strpos($data,&quot;%&quot;,$s)-1); 
    if(substr_count($version,&quot;PDF-1.2&quot;)==0) 
        return handleV3($data); 
    else 
        return handleV2($data); 

    
} 
// handles the verson 1.2 
function handleV2($data){ 
        
    // grab objects and then grab their contents (chunks) 
    $a_obj = getDataArray($data,&quot;obj&quot;,&quot;endobj&quot;); 
    
    foreach($a_obj as $obj){ 
        
        $a_filter = getDataArray($obj,&quot;&amp;#62;&quot;); 
    	$j = 0;
        if (is_array($a_filter)){ 
            $j++; 
            $a_chunks[$j][&quot;filter&quot;] = $a_filter[0]; 

            $a_data = getDataArray($obj,&quot;stream\r\n&quot;,&quot;endstream&quot;); 
            if (is_array($a_data)){ 
                $a_chunks[$j][&quot;data&quot;] = substr($a_data[0], 
strlen(&quot;stream\r\n&quot;), 
strlen($a_data[0])-strlen(&quot;stream\r\n&quot;)-strlen(&quot;endstream&quot;)); 
            } 
        } 
    } 

    // decode the chunks 
    foreach($a_chunks as $chunk){ 

        // look at each chunk and decide how to decode it - by looking at the contents of the filter 
        $a_filter = split(&quot;/&quot;,$chunk[&quot;filter&quot;]); 
        
        if ($chunk[&quot;data&quot;]!=&quot;&quot;){ 
            // look at the filter to find out which encoding has been used            
            if (substr($chunk[&quot;filter&quot;],&quot;FlateDecode&quot;)!==false){ 
                $data =@ gzuncompress($chunk[&quot;data&quot;]); 
                if (trim($data)!=&quot;&quot;){ 
                    $result_data .= ps2txt($data); 
                } else { 
                
                    //$result_data .= &quot;x&quot;; 
                } 
            } 
        } 
    } 
    
    return $result_data; 
} 

//handles versions &amp;#62;1.2 
function handleV3($data){ 
    // grab objects and then grab their contents (chunks) 
    $a_obj = getDataArray($data,&quot;obj&quot;,&quot;endobj&quot;); 
    $result_data=&quot;&quot;; 
    foreach($a_obj as $obj){ 
        //check if it a string 
        if(substr_count($obj,&quot;/GS1&quot;)&amp;#62;0){ 
            //the strings are between ( and ) 
            preg_match_all(&quot;&amp;#166;\((.*?)\)&amp;#166;&quot;,$obj,$field,PREG_SET_ORDER); 
            if(is_array($field)) 
                foreach($field as $data) 
                    $result_data.=$data[1]; 
        } 
    } 
    return $result_data; 
} 

function ps2txt($ps_data){ 
    $result = &quot;&quot;; 
    $a_data = getDataArray($ps_data,&quot;[&quot;,&quot;]&quot;); 
    if (is_array($a_data)){ 
        foreach ($a_data as $ps_text){ 
            $a_text = getDataArray($ps_text,&quot;(&quot;,&quot;)&quot;); 
            if (is_array($a_text)){ 
                foreach ($a_text as $text){ 
                    $result .= substr($text,1,strlen($text)-2); 
                } 
            } 
        } 
    } else { 
        // the data may just be in raw format (outside of [] tags) 
        $a_text = getDataArray($ps_data,&quot;(&quot;,&quot;)&quot;); 
        if (is_array($a_text)){ 
            foreach ($a_text as $text){ 
                $result .= substr($text,1,strlen($text)-2); 
            } 
        } 
    } 
    return $result; 
} 

function getFileData($filename){ 
    $handle = fopen($filename,&quot;rb&quot;); 
    $data = fread($handle, filesize($filename)); 
    fclose($handle); 
    return $data; 
} 

function getDataArray($data,$start_word,$end_word){ 

    $start = 0; 
    $end = 0; 
    $a_result = 0;
    unset($a_result); 
    
    while ($start!==false &amp;#38;&amp;#38; $end!==false){ 
        $start = strpos($data,$start_word,$end); 
        if ($start!==false){ 
            $end = strpos($data,$end_word,$start); 
            if ($end!==false){ 
                // data is between start and end 
                $a_result[] = substr($data,$start,$end-$start+strlen($end_word)); 
            } 
        } 
    } 
    return $a_result; 
} 


?&amp;#62;



Ejecuto y me aparece una IOException: 

CreateProcess: c:\apache\php\php -l -f D:/Practicas/practicaPDM/pdf2txt.php error=3

Sabrias decirme que es lo que pasa?? me falta algo en la configuración o es en el código?? 
No he programado nunca en php y no se como se introduce el pdf que quiero que analice, yo programo en java y sería el equivalente a un main con una llamada a la función function pdf2txt($filename) pasandole el archivo en cuestión...¿como se hace eso?

Espero q puedas ayudarme, estoy perdida!!
Muchas gracias.</description>
		<content:encoded><![CDATA[	<p>Hola Patxi, necesito un poco de ayuda&#8230;<br />
He encontrado este programa que pasa un .pdf a texto llano (justo lo que yo necesito). He creado un proyecto y un archivo php en eclipse y he copiado lo siguiente:</p>
	<p>$fname = &#8216;pdf2txt&#8217;;<br />
$fname();<br />
function pdf2txt($filename){ </p>
	<p>    $data = getFileData($filename); </p>
	<p>    $s=strpos($data,&#8221;%&#8221;)+1; </p>
	<p>    $version=substr($data,$s,strpos($data,&#8221;%&#8221;,$s)-1);<br />
    if(substr_count($version,&#8221;<acronym title="Portable Document Format">PDF</acronym>-1.2&#8243;)==0)<br />
        return handleV3($data);<br />
    else<br />
        return handleV2($data); </p>
	<p>}<br />
// handles the verson 1.2<br />
function handleV2($data){ </p>
	<p>    // grab objects and then grab their contents (chunks)<br />
    $a_obj = getDataArray($data,&#8221;obj&#8221;,&#8221;endobj&#8221;); </p>
	<p>    foreach($a_obj as $obj){ </p>
	<p>        $a_filter = getDataArray($obj,&#8221;&gt;&#8221;);<br />
    	$j = 0;<br />
        if (is_array($a_filter)){<br />
            $j++;<br />
            $a_chunks[$j][&#8221;filter&#8221;] = $a_filter[0]; </p>
	<p>            $a_data = getDataArray($obj,&#8221;stream\r\n&#8221;,&#8221;endstream&#8221;);<br />
            if (is_array($a_data)){<br />
                $a_chunks[$j][&#8221;data&#8221;] = substr($a_data[0],<br />
strlen(&#8221;stream\r\n&#8221;),<br />
strlen($a_data[0])-strlen(&#8221;stream\r\n&#8221;)-strlen(&#8221;endstream&#8221;));<br />
            }<br />
        }<br />
    } </p>
	<p>    // decode the chunks<br />
    foreach($a_chunks as $chunk){ </p>
	<p>        // look at each chunk and decide how to decode it - by looking at the contents of the filter<br />
        $a_filter = split(&#8221;/&#8221;,$chunk[&#8221;filter&#8221;]); </p>
	<p>        if ($chunk[&#8221;data&#8221;]!=&#8221;"){<br />
            // look at the filter to find out which encoding has been used<br />
            if (substr($chunk[&#8221;filter&#8221;],&#8221;FlateDecode&#8221;)!==false){<br />
                $data =@ gzuncompress($chunk[&#8221;data&#8221;]);<br />
                if (trim($data)!=&#8221;"){<br />
                    $result_data .= ps2txt($data);<br />
                } else { </p>
	<p>                    //$result_data .= &#8220;x&#8221;;<br />
                }<br />
            }<br />
        }<br />
    } </p>
	<p>    return $result_data;<br />
} </p>
	<p>//handles versions &gt;1.2<br />
function handleV3($data){<br />
    // grab objects and then grab their contents (chunks)<br />
    $a_obj = getDataArray($data,&#8221;obj&#8221;,&#8221;endobj&#8221;);<br />
    $result_data=&#8221;";<br />
    foreach($a_obj as $obj){<br />
        //check if it a string<br />
        if(substr_count($obj,&#8221;/GS1&#8243;)&gt;0){<br />
            //the strings are between ( and )<br />
            preg_match_all(&#8221;|\((.*?)\)|&#8221;,$obj,$field,PREG_SET_ORDER);<br />
            if(is_array($field))<br />
                foreach($field as $data)<br />
                    $result_data.=$data[1];<br />
        }<br />
    }<br />
    return $result_data;<br />
} </p>
	<p>function ps2txt($ps_data){<br />
    $result = &#8220;&#8221;;<br />
    $a_data = getDataArray($ps_data,&#8221;[&#8221;,&#8221;]&#8221;);<br />
    if (is_array($a_data)){<br />
        foreach ($a_data as $ps_text){<br />
            $a_text = getDataArray($ps_text,&#8221;(&#8221;,&#8221;)&#8221;);<br />
            if (is_array($a_text)){<br />
                foreach ($a_text as $text){<br />
                    $result .= substr($text,1,strlen($text)-2);<br />
                }<br />
            }<br />
        }<br />
    } else {<br />
        // the data may just be in raw format (outside of [] tags)<br />
        $a_text = getDataArray($ps_data,&#8221;(&#8221;,&#8221;)&#8221;);<br />
        if (is_array($a_text)){<br />
            foreach ($a_text as $text){<br />
                $result .= substr($text,1,strlen($text)-2);<br />
            }<br />
        }<br />
    }<br />
    return $result;<br />
} </p>
	<p>function getFileData($filename){<br />
    $handle = fopen($filename,&#8221;rb&#8221;);<br />
    $data = fread($handle, filesize($filename));<br />
    fclose($handle);<br />
    return $data;<br />
} </p>
	<p>function getDataArray($data,$start_word,$end_word){ </p>
	<p>    $start = 0;<br />
    $end = 0;<br />
    $a_result = 0;<br />
    unset($a_result); </p>
	<p>    while ($start!==false &amp;&amp; $end!==false){<br />
        $start = strpos($data,$start_word,$end);<br />
        if ($start!==false){<br />
            $end = strpos($data,$end_word,$start);<br />
            if ($end!==false){<br />
                // data is between start and end<br />
                $a_result[] = substr($data,$start,$end-$start+strlen($end_word));<br />
            }<br />
        }<br />
    }<br />
    return $a_result;<br />
} </p>
	<p>?&gt;</p>
	<p>Ejecuto y me aparece una IOException: </p>
	<p>CreateProcess: c:\apache\php\php -l -f D:/Practicas/practicaPDM/pdf2txt.php error=3</p>
	<p>Sabrias decirme que es lo que pasa?? me falta algo en la configuración o es en el código??<br />
No he programado nunca en php y no se como se introduce el pdf que quiero que analice, yo programo en java y sería el equivalente a un main con una llamada a la función function pdf2txt($filename) pasandole el archivo en cuestión&#8230;¿como se hace eso?</p>
	<p>Espero q puedas ayudarme, estoy perdida!!<br />
Muchas gracias.
</p>
]]></content:encoded>
				</item>
	<item>
		<title>by: Patxi</title>
		<link>http://www.eslomas.com/index.php/archives/2005/12/22/llamadas-dinamicas-funciones-metodos-php/#comment-17640</link>
		<pubDate>Thu, 26 Apr 2007 07:54:23 +0000</pubDate>
		<guid>http://www.eslomas.com/index.php/archives/2005/12/22/llamadas-dinamicas-funciones-metodos-php/#comment-17640</guid>
					<description>Hola Jean Piero. Como bien dices, lo más habitual es utilizar punteros para implementar las estructuras de árbol, pero existen otros mecanismos como por ejemplo implementarlos en un array. Seguramente tendrás información de los algoritmos concretos y sus ventajas/inconvenientes en los libros habituales de estructuras de datos.

Por otra parte en PHP quizás lo más sencillo sea utilizar arrays anidados. Dado que no hay comprobación de tipos y que los arrays no necesitan ser creados con un tamaño inicial, puedes partir de un array con dos elementos y de cada uno de los elementos colgar otro array, y así sucesivamente para crear un árbol binario. Quizás dentro de cada posición del array podrías almacenar otro array con dos valores, uno con el dato del nodo y otro con el array que contenga las subramas. Modificar los algoritmos habituales para el manejo de esta estructura debería ser trivial.

Por último, si tienes soltura con orientación a objetos y sus peculiaridades en PHP (http://www.eslomas.com/index.php/archives/2006/01/09/programacion-orientada-a-objetos-en-php4/), podrías plantearte algo más estructurado creando un clase nodo con los atributos de cada nodo y los métodos de acceso a las subramas.</description>
		<content:encoded><![CDATA[	<p>Hola Jean Piero. Como bien dices, lo más habitual es utilizar punteros para implementar las estructuras de árbol, pero existen otros mecanismos como por ejemplo implementarlos en un array. Seguramente tendrás información de los algoritmos concretos y sus ventajas/inconvenientes en los libros habituales de estructuras de datos.</p>
	<p>Por otra parte en <acronym title="Hypertext PreProcessing">PHP</acronym> quizás lo más sencillo sea utilizar arrays anidados. Dado que no hay comprobación de tipos y que los arrays no necesitan ser creados con un tamaño inicial, puedes partir de un array con dos elementos y de cada uno de los elementos colgar otro array, y así sucesivamente para crear un árbol binario. Quizás dentro de cada posición del array podrías almacenar otro array con dos valores, uno con el dato del nodo y otro con el array que contenga las subramas. Modificar los algoritmos habituales para el manejo de esta estructura debería ser trivial.</p>
	<p>Por último, si tienes soltura con orientación a objetos y sus peculiaridades en <acronym title="Hypertext PreProcessing">PHP</acronym> (http://www.eslomas.com/index.php/archives/2006/01/09/programacion-orientada-a-objetos-en-php4/), podrías plantearte algo más estructurado creando un clase nodo con los atributos de cada nodo y los métodos de acceso a las subramas.
</p>
]]></content:encoded>
				</item>
	<item>
		<title>by: Jean Piero Flores</title>
		<link>http://www.eslomas.com/index.php/archives/2005/12/22/llamadas-dinamicas-funciones-metodos-php/#comment-17607</link>
		<pubDate>Wed, 25 Apr 2007 16:11:52 +0000</pubDate>
		<guid>http://www.eslomas.com/index.php/archives/2005/12/22/llamadas-dinamicas-funciones-metodos-php/#comment-17607</guid>
					<description>Hola Patxi! buenos dias. Amigo, queria preguntarte cómo podría hacer para manejar punteros a través de las funciones que expones para establecer un árbol, porque básicamente en todos los libros que tengo de estructuras de datos, los arboles se manejan con punteros, y estoy claro en que los punteros no existen en PHP. Espero tu respuesta, gracias!!!</description>
		<content:encoded><![CDATA[	<p>Hola Patxi! buenos dias. Amigo, queria preguntarte cómo podría hacer para manejar punteros a través de las funciones que expones para establecer un árbol, porque básicamente en todos los libros que tengo de estructuras de datos, los arboles se manejan con punteros, y estoy claro en que los punteros no existen en <acronym title="Hypertext PreProcessing">PHP</acronym>. Espero tu respuesta, gracias!!!
</p>
]]></content:encoded>
				</item>
	<item>
		<title>by: geiner</title>
		<link>http://www.eslomas.com/index.php/archives/2005/12/22/llamadas-dinamicas-funciones-metodos-php/#comment-1312</link>
		<pubDate>Fri, 10 Feb 2006 23:45:59 +0000</pubDate>
		<guid>http://www.eslomas.com/index.php/archives/2005/12/22/llamadas-dinamicas-funciones-metodos-php/#comment-1312</guid>
					<description>quiero un codigo en php que me diga la direccion ip de cada uno de mis pc (red lan) si lo tienes enviamelo a mi correo geiner_13@hotmail.com se lo agradesco</description>
		<content:encoded><![CDATA[	<p>quiero un codigo en php que me diga la direccion ip de cada uno de mis pc (red lan) si lo tienes enviamelo a mi correo <a href="mailto:geiner_13@hotmail.com">geiner_13@hotmail.com</a> se lo agradesco
</p>
]]></content:encoded>
				</item>
</channel>
</rss>
