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()
делает это:
- Скачать HTML с
http://www.example.com/<ID>/go.html
- Возьмите HTML и разбейте его на каждую точку, где находится строка
<iframe
происходит. - Теперь возьмите все, что пришло после первого
<iframe
в HTML, и разделить его в каждой точке, где строкаsrc="
появляется. - Теперь возьми все после первого
src="
и разделить его в каждой точке, где"
появляется. - Верни то, что было до первого
"
,
Так что это довольно плохой способ сделать это, но фактически он ищет первое появление этого в 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];
}