<?php

/**
 * @file recuperer_lien.php
 * @brief Page permettant de récupérer les liens d'une page web.
 *
 * @author hughes monget
 * @see http://monget.com/
 */

if (!headers_sent())
{
    
header('Content-Type: text/html; charset=UTF-8');
}

set_time_limit(0);

$str_liste_url '';
if (isset(
$_REQUEST['url']) && is_string($_REQUEST['url']))
{
    
$str_liste_url trim($_REQUEST['url']);
    if (
get_magic_quotes_gpc())
    {
        
$str_liste_url stripslashes($str_liste_url);
    }

    
$str_liste_url html_entity_decode($str_liste_url);
}

//var_dump($str_liste_url);

$arr_str_type = array('a''img');
$str_type reset($arr_str_type);
if (isset(
$_REQUEST['type']) && in_array($_REQUEST['type'], $arr_str_type))
{
    
$str_type $_REQUEST['type'];
}

$str_recherche '';
if (isset(
$_REQUEST['recherche']) && is_string($_REQUEST['recherche']))
{
    
$str_recherche trim($_REQUEST['recherche']);
}




?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
    <head>
        <title>Récupérer les liens de la page</title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
        <style type="text/css">
        <!--
        input.url
        {
            width: 600px;
        }
        -->
        </style>
    </head>
    <body>
        <form method="post" action="">
            <table>
                <tr>
                    <td>
                        <label style="vertical-align:top" for="url">url</label> <textarea rows="5" cols="100" type="text" class="url" id="url" name="url"><?php echo htmlspecialchars($str_liste_urlENT_QUOTES'UTF-8'); ?></textarea>
                    </td>
                </tr>
                <tr>
                    <td>
                        <input type="submit" value="submit" />
<?php
foreach ($arr_str_type as $tt)
{
    
$str_checked = ($tt == $str_type) ? ' checked="checked"' '';
    
$str_id 'type_' $tt;
    echo 
'<input type="radio" id="',$str_id,'" name="type" value="',$tt,'" ',$str_checked,' /> <label for="',$str_id,'">',$tt,'</label>';
}

echo 
'&nbsp;<input type="text" name="recherche" value="',htmlspecialchars($str_rechercheENT_QUOTES'UTF-8'),'" />'

?>

                    </td>
                </tr>
            </table>
        </form>
<?php

$str_liste_url 
explode("\n"$str_liste_url);
$str_liste_url array_unique($str_liste_url);
$str_liste_url array_map('trim'$str_liste_url);
$str_liste_url array_filter($str_liste_urlcreate_function('$s''return !!$s;'));

//sort($str_liste_url);

$arr_str_resultat = array();


foreach (
$str_liste_url as $str_url)
{
    if (
$str_url && preg_match('!^http://!'$str_url))
    {
        
$arr_str_url parse_url($str_url);

        
$str_host $arr_str_url['host'];

        
$str_contenu file_get_contents($str_url);

        
//echo '<pre>'.htmlspecialchars($str_contenu).'</pre>';

        
if ($str_contenu)
        {
            
$str_regex '//';
            switch (
$str_type)
            {
                case 
'a'$str_regex '/<a[^>]+href\s*=\s*"([^>"\s]+)"/iU'; break;
                case 
'img'$str_regex '/<img[^>]+src\s*=\s*["\']([^>\n"]+)["\']/iU'; break;
                default: exit(
'type inconnu'); break;
            }
            if (
preg_match_all($str_regex$str_contenu$arr_str_match))
            {
                
//ob_start(); var_dump($arr_str_match); echo '<pre>'.htmlspecialchars(ob_get_clean()).'</pre>';
                
if (isset($arr_str_match[1]) && count($arr_str_match[1]))
                {
                    foreach (
$arr_str_match[1] as $str_url)
                    {
                        
$arr_str_resultat[] = $str_url;
                    }
                }
            }
        }
    }

}

if (
$arr_str_resultat)
{
    function 
corriger_url($str_url)
    {
        global 
$str_host;
        if (!
is_string($str_url) || !strlen($str_url) ) { return FALSE; }
        if (
stripos($str_url'http://') === FALSE)
        {
            
$str_separateur = (($str_url{0} != '/') ? '' '/');
            
$str_url 'http://' $str_host $str_separateur $str_url;
        }
        return 
$str_url;
    }

    
$arr_str_resultat array_map('corriger_url'$arr_str_resultat);
    
$arr_str_resultat array_unique($arr_str_resultat);
    if (
$str_recherche)
    {
        
$arr_str_resultat array_filter($arr_str_resultatcreate_function('$s''return (FALSE !== strpos($s, \''.addslashes($str_recherche).'\'));'));
    }
    
//sort($arr_str_resultat);
    //$arr_str_resultat = array_map('htmlspecialchars', $arr_str_resultat);
    
echo '<textarea cols="100" rows="',count($arr_str_resultat),'">'implode("\n"$arr_str_resultat), '</textarea>';

}

echo 
'<hr />';
highlight_file(__FILE__);

?>
    </body>
</html>