PHP Explode и Get_Url: не отображаются URL

Его немного трудно понять.

в header.php у меня есть этот код:

<?
$ID = $link;
$url = downloadLink($ID);
?>

Я получаю идентификатор с этой переменной $link -> 12345678, а с помощью $ url я получаю полную ссылку из functions.php

в файле functions.php у меня есть этот фрагмент

function downloadlink ($d_id)
  {
    $res = @get_url ('' . 'http://www.example.com/' . $d_id . '/go.html');
    $re = explode ('<iframe', $res);
    $re = explode ('src="', $re[1]);
    $re = explode ('"', $re[1]);
    $url = $re[0];
    return $url;
  } 

и обычно он печатает URL-адрес.., но я не могу понять код..

1 ответ

Решение

Это написано каким-то странным образом, но в основном то, что downloadLink() делает это:

  1. Скачать HTML с http://www.example.com/<ID>/go.html
  2. Возьмите HTML и разбейте его на каждую точку, где находится строка <iframe происходит.
  3. Теперь возьмите все, что пришло после первого <iframe в HTML, и разделить его в каждой точке, где строка src=" появляется.
  4. Теперь возьми все после первого src=" и разделить его в каждой точке, где " появляется.
  5. Верни то, что было до первого ",

Так что это довольно плохой способ сделать это, но фактически он ищет первое появление этого в HTML-коде:

<iframe src="<something>"

И возвращает <something>,

Изменить: другой метод, как указано в комментарии:

На самом деле не существует какого-либо конкретного "правильного" способа сделать это, но довольно простым способом было бы изменить это на это:

function downloadlink ($d_id)
{
    $html = @get_url ('' . 'http://www.example.com/' . $d_id . '/go.html');
    preg_match('/\<iframe src="(.+?)"/', $html, $matches);
    return $matches[1];
}
Другие вопросы по тегам