PHP Explode и Get_Url: не отображаются URL - PullRequest
0 голосов
/ 01 апреля 2010

это немного сложно понять.

в 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 Ответ

1 голос
/ 02 апреля 2010

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

  1. Скачать HTML с http://www.example.com/<ID>/go.html
  2. Возьмите HTML и разбейте его в каждой точке, где встречается строка <iframe.
  3. Теперь возьмите все, что пришло после first <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];
}
...