2013-11-11 3 views
1

Я использую simple html dom, я хочу получить часть страницы, которая, кажется, работает нормально :), но ссылки неправильные, они относительно моего сайта ... , на котором я решил использовать базовый тег вместо .... вот что у меня естьКак сбросить базовый тег

<?php 
include('simple_html_dom.php'); 

$url = "http://bm.erciyes.edu.tr/"; 
$file = file_get_html($url); 

echo "<base href='$url'>"; 
foreach($file->find('div.onemliduyurular') as $var){ 
    echo $var->innertext; 
} 


$url = "http://bm.erciyes.edu.tr/"; 
?> 

<h1>Return to my Site</h1> 
<?php 

// I want this link here become relative to my site again 
echo "<a href='hello.php'>Go This Way</a>"; 

так добавил эту строку выше Еогеасп

echo "<base href='$url'>"; 

есть способ, в котором я могу сбросить базовый тег ? или какая-либо другая альтернатива;)

внутренний текст содержит этот

// get dom node's inner html 
    function innertext() 
    { 
     if (isset($this->_[HDOM_INFO_INNER])) return $this->_[HDOM_INFO_INNER]; 
     if (isset($this->_[HDOM_INFO_TEXT])) return $this->dom->restore_noise($this->_[HDOM_INFO_TEXT]); 

     $ret = ''; 
     foreach ($this->nodes as $n) 
      $ret .= $n->outertext(); 
     return $ret; 
    } 

и это заявление я потянув

+0

Просто используйте абсолютный URL-адрес. – SLaks

+1

Вам нужно изменить эти ссылки, чтобы включить полный путь, в файле simple-html-dom должно быть что-то для этого. – enrey

+0

@SLaks не может использовать абсолютный путь, спасибо, хотя ... – Fahad

ответ

1

Один из пути делается с помощью абсолютного URL

... Что делать, если вы снабдите ваш URL с относительным, который идет от выдвинутого сайта ....
Как и в

<?php 
foreach($html->find('div.onemliduyurular') as $d) { 
    foreach($d->find('a[href]') as $goAway){ 
     $goAway->href =$url.$goAway->href; 
     } 
    echo $d->innertext; 
} 
$html->clear(); 
unset($html); 

Я надеюсь, что она может работать с вашим проектом

+1

Спасибо;) это сработало !!! – Fahad

3

Вы не можете изменить базовый адрес в другом base элементе, так как HTML syntax for head позволяет в самый один base элемент. HTML5 не меняет этого; он явно says: «Если есть несколько базовых элементов с атрибутами href, все, кроме первого, игнорируются».

Вывод состоит в том, что вам необходимо исправить соответствующие абсолютные URL-адреса.

+0

Есть ли способ без использования базового тега? – Fahad

+0

Способ сделать что? Первоначальный вопрос сильно отличался от нынешнего. И я полагаю, что мы до сих пор не видели реальной проблемы. Но в HTML, 'base' является ** ** способом установки базового адреса. –

+1

@Fahad есть способ, вам нужно использовать абсолютные адреса. – enrey

Смежные вопросы