Синтаксический анализ данных, полученных из imageshack API - PullRequest
0 голосов
/ 05 ноября 2010

Мне нужно ваше превосходное понимание веб-разработки.Я играл с API Imageshack, и мне удалось загрузить изображение с помощью формы с моего сервера на сервер imageshack, и он возвращает мне довольно запутанные данные обратно.

Теперь мой вопрос: что, черт возьми, я делаю с этим, чтобы получить то, что мне нужно.Я должен разобрать это?Я ненавижу регулярные выражения (но я буду иметь дело с этим, если придется).Если мне нужно разобрать его, как бы я отправил всю строку в функцию?Я немного смущен.

<form method="post" enctype="multipart/form-data" action="http://www.imageshack.us/upload_api.php">



<p><input type="file" name="fileupload"></p>

<p><input type="text" name="tags" value="proba,test"></p>

<p><input type="text" name="key" value="xxxxxxxxxxxxxxxxxxxxxxxxxx"></p>

<p><select name="optsize">

        <option value="320x240">Small (320x240)</option>

        <option value="426x320" selected>Medium (426x320)</option>

        <option value="640x480">Big (640x480)</option>

</select></p>

<p><input type="submit" value="Go"></p>

</form>

Данные, которые я получаю, выглядят примерно так.

http://img574.imageshack.us/img574/3084/18835698.png

Полагаю, мой вопрос действительно заключается в том, что всякий раз, когда пользователь нажимает кнопку отправки, он дает ему этот мусор, как мне его динамически анализировать и давать ему симпатичный результат.

Ответы [ 5 ]

1 голос
/ 12 февраля 2011

Вы должны использовать динамическую страницу, которая позволяет вам использовать библиотеку CURL или, более просто, функцию Ajax.

Например, после передачи всего материала с использованием PHP CURL вы можете получить URL из возвращенной страницы XML, используя simpleXML.

0 голосов
/ 16 февраля 2012

все, что вам нужно, находится по этой ссылке:

http://code.google.com/p/imageshackapi/source/browse/RedirectAPI.wiki?repo=wiki

Вы должны поставить это в форме

<input type="hidden" name="success_url" value="mysite.com/success.php?var1=%s&var2=%b&var3=%i">; 
<input type="hidden" name="error_url" value="error.php">
<input type="hidden" name="optsize" id="optsize" value="200x380"/> 
<input type="hidden" name="optimage" id="optimage" value="1"/> 
<input type="hidden" name="rembar" id="rembar" value="1"/>

чтобы получить URL изображения:

$img_url="http://img$var1.imageshack.us/img$var1/$var2/$var3";

чтобы получить эскиз:

$var3= str_replace (".jpg", ".th.jpg", $var3); 
$var3= str_replace (".gif", ".th.gif", $var3); 
$var3= str_replace (".png", ".th.png", $var3); 
$tumb_url="http://img$var1.imageshack.us/img$var1/$var2/$var3";
0 голосов
/ 05 ноября 2010

Вы хотите сделать это в PHP Runtime.

После того, как у вас есть xml, вот небольшая функция, которую можно использовать для получения информации:

/**
* parsing XML response for info about uploaded file
*   image_link  - URL address of uploaded image on imageshack server
*   thumb_link  - URL address of thumbnail of uploaded image on imageshack server
*   yfrog_link  - URL address of uploaded image on yfrog server
*   yfrog_thumb - URL address of thumbnail of uploaded image on yfrog server  
*   ad_link     - URL address of imgaeshack page with uploaded image
*   done_page   - URL address of thumbnail of uploaded image on imageshack server
*   width       - width of uploaded image [px]
*   height      - height of uploaded image [px]
*/
function getInfo($xml,$key)
{
    preg_match('/<'.$key.'>(.*)<\/'.$key.'>/', $xml, $value);    
    if (empty($value[0])) {
        return('invalid key');
    }else {
        return(strip_tags($value[0]));
    }
}

Источник функции: http://www.sourcer.cz/ci-lib/imageshack/

использование будет выглядеть так:

$xml = file_get_contents('http://www.imageshack.us/upload_api.php?url=http://www.mysite.com/myimage.png');
$image_link = getInfo($xml,'image_link');
0 голосов
/ 05 ноября 2010

Ах, спасибо, теперь я понял. Я провел дальнейшее исследование, и другим способом могло бы стать использование curl следующим образом:

Использование cURL для отправки сообщения на "http://www.imageshack.us/upload_api.php"

    $data['key'] = API_KEY;
    $data['public'] = "yes";
    $data['xml'] = "yes";
    $data['fileupload'] = '@'.$dest; 

    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, 'http://www.imageshack.us/upload_api.php');
    curl_setopt($curl, CURLOPT_POST, true);
    curl_setopt($curl, CURLOPT_HEADER, false);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl, CURLOPT_TIMEOUT, 600);
    /*curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);*/
    curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
    $result = curl_exec($curl);
    curl_close($curl);
0 голосов
/ 05 ноября 2010

Исходя из тегов вашего вопроса, я собираюсь предположить, что возвращаемые данные являются XML, и рекомендую вам изучить встроенные функции PHP SimpleXML для анализа ответа.

Руководство по PHP содержит базовый пример, который должен помочь вам: Основное использование

...