Как извлечь данные из URL, как Facebook в Asp.net MVC3? - PullRequest
0 голосов
/ 02 ноября 2011

Есть ли способ извлечь данные из URL, как это делает Facebook?

Я ссылался на множество ссылок, но это использует php-код. Это- http://www.99points.info/2010/07/facebook-like-extracting-url-data-with-jquery-ajax-php/

http://www.9lessons.info/2010/06/facebook-like-extracting-url-data-with.html

www.webinfopedia.com / извлечения-мета-данные-от-url-используя-php.html

Я хочу реализовать так. Как я могу реализовать это в моем приложении asp.net mvc3?

Я только что упоминал об этом -www.achari.in/facebook-like-url-data-extract-using-jquery в этом я не понимаю, что они сделали в PHP-коде, Может кто-нибудь объяснить этот код, что они сделали в этом?

В этом Файл index.php, имеющий

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>achari.in - Demo - Facebook Like URL data Extract Using jQuery PHP and Ajax</title>

<link rel="stylesheet" href="css/style.css" type="text/css">
<script type="text/javascript" src="js/jquery-1.2.6.min.js"></script>
<script type="text/javascript" src="js/jquery.livequery.js"></script>
<script type="text/javascript" src="js/jquery.watermarkinput.js"></script>
</head>
<script type="text/javascript">
    $(document).ready(function(){   
        // delete event
        $('#attach').livequery("click", function(){

            if(!isValidURL($('#url').val()))
            {
                alert('Please enter a valid url.');
                return false;
            }
            else
            {
                $('#load').show();
                $.post("includes/fetch.php?url="+$('#url').val(), {
                }, function(response){
                    $('#loader').html($(response).fadeIn('slow'));
                    $('.images img').hide();
                    $('#load').hide();
                    $('img#1').fadeIn();
                    $('#cur_image').val(1);
                });
            }
        }); 
        // next image
        $('#next').livequery("click", function(){

            var firstimage = $('#cur_image').val();
            $('#cur_image').val(1);
            $('img#'+firstimage).hide();
            if(firstimage <= $('#total_images').val())
            {
                firstimage = parseInt(firstimage)+parseInt(1);
                $('#cur_image').val(firstimage);
                $('img#'+firstimage).show();
            }
        }); 
        // prev image
        $('#prev').livequery("click", function(){

            var firstimage = $('#cur_image').val();

            $('img#'+firstimage).hide();
            if(firstimage>0)
            {
                firstimage = parseInt(firstimage)-parseInt(1);
                $('#cur_image').val(firstimage);
                $('img#'+firstimage).show();
            }

        }); 
        // watermark input fields
        jQuery(function($){

           $("#url").Watermark("http://");
        });
        jQuery(function($){

            $("#url").Watermark("watermark","#369");

        }); 
        function UseData(){
           $.Watermark.HideAll();
           $.Watermark.ShowAll();
        }

    }); 

    function isValidURL(url){
        var RegExp = /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/;

        if(RegExp.test(url)){
            return true;
        }else{
            return false;
        }
    }

    function confirmQuit()
    {
        var response = confirm('do you wish to close window !');        
        if(response === true)
          {
             return true;
          }
        else {
             return false;
        }
    }
</script>
<body>
<div align="center">
<br clear="all" /><br clear="all" />
<div style="font-size:30px;">Facebook Like URL data Extract Using jQuery PHP and Ajax</div>
<br clear="all" />
<a style="color:#000000; font-size:14px" href="#">Back To Tutorial</a>
<br clear="all" />

<input type="hidden" name="cur_image" id="cur_image" />
<div class="wrap" align="center">

    <div class="box" align="left">

        <div class="head">Link</div>
        <div class="close" align="right">
            <div class="closes" onclick="if(confirmQuit() == true) { window.close(); }"></div>
        </div>

        <br clear="all" /><br clear="all" />

        <input type="text" name="url" size="64" id="url" />
        <input type="button" name="attach" value="Attach" id="attach" />
        <br clear="all" />

        <div id="loader">

            <div align="center" id="load" style="display:none"><img src="images/load.gif" /></div>

        </div>
        <br clear="all" />
    </div>

</div>
</div>
  <br clear="all" />
</body>
</html>

вышеуказанный код является частью и

    fetch.php
    <?php

   $url = $_REQUEST['url'];
$url = checkValues($url);

function checkValues($value)
{
    $value = trim($value);
    if (get_magic_quotes_gpc()) 
    {
        $value = stripslashes($value);
    }
    $value = strtr($value, array_flip(get_html_translation_table(HTML_ENTITIES)));
    $value = strip_tags($value);
    $value = htmlspecialchars($value);
    return $value;
}   

function fetch_record($path)
{
    $file = fopen($path, "r"); 
    if (!$file)
    {
        exit("Problem occured");
    } 
    $data = '';
    while (!feof($file))
    {
        $data .= fgets($file, 1024);
    }
    return $data;
}

$string = fetch_record($url);


/// fecth title
$title_regex = "/<title>(.+)<\/title>/i";
preg_match_all($title_regex, $string, $title, PREG_PATTERN_ORDER);
$url_title = $title[1];

/// fecth decription
$tags = get_meta_tags($url);

// fetch images
$image_regex = '/<img[^>]*'.'src=[\"|\'](.*)[\"|\']/Ui';
preg_match_all($image_regex, $string, $img, PREG_PATTERN_ORDER);
$images_array = $img[1];

?>

    <div class="images">
    <?php
    $k=1;
    for ($i=0;$i<=sizeof($images_array);$i++)
    {
        if(@$images_array[$i])
        {
            if(@getimagesize(@$images_array[$i]))
            {
                list($width, $height, $type, $attr) = getimagesize(@$images_array[$i]);
                if($width >= 50 && $height >= 50 ){

                echo "<img src='".@$images_array[$i]."' width='100' id='".$k."' >";

                $k++;

                }
            }
        }
    }
    ?>
    <!--<img src="ajax.jpg"  alt="" />-->
    <input type="hidden" name="total_images" id="total_images" value="<?php echo --$k?>" />
    </div>
    <div class="info">

        <label class="title">
            <?php  echo @$url_title[0]; ?>
        </label>
        <br clear="all" />
        <label class="url">
            <?php  echo substr($url ,0,35); ?>
        </label>
        <br clear="all" /><br clear="all" />
        <label class="desc">
            <?php  echo @$tags['description']; ?>
        </label>
        <br clear="all" /><br clear="all" />

        <label style="float:left"><img src="images/prev.png" id="prev" alt="" /><img src="images/next.png" id="next" alt="" /></label>

        <label class="totalimg">
            Total <?php echo $k?> images
        </label>
        <br clear="all" />

    </div>

Я не знаю php, поэтому кто-нибудь может мне помочь найти это решение?

В приведенном выше коде они используют эту функцию

   function fetch_record($path)
{
$file = fopen($path, "r"); 
if (!$file)
{
    exit("Problem occured");
} 
$data = '';
while (!feof($file))
{
    $data .= fgets($file, 1024);
}
return $data;
 }

Может кто-нибудь сказать мне, что именно в этом коде что такое использование открытого файла в этом, это для чтения файла индекса URL ??

Ответы [ 3 ]

1 голос
/ 06 декабря 2011

Взгляните на этот проект с открытым исходным кодом:

http://nalgorithm.wordpress.com/2011/12/05/embedded-url-representation/

На самом деле это библиотека классов, которая вызывается клиентом приложения MVC с использованием JQuery и его функций AJAX..

Он использует AgilityPack, но есть так много других проблем, с которыми вам приходится сталкиваться, например, кодирование.

1 голос
/ 19 декабря 2011

Ссылка на странице, которую я разместил раньше, к сожалению, была мертва, но теперь она исправлена.

http://nalgorithm.wordpress.com/2011/12/05/embedded-url-representation/

Как я уже говорил, я работаю над служебной версией этого инструмента, чтобы другие веб-приложения могли использовать его только с помощью (jquery) и вызова службы.

0 голосов
/ 02 ноября 2011

Для разбора HTML я бы порекомендовал вам взглянуть на HTML Agility Pack .

...