2011-01-04 2 views
0

Привет, мне нужно удалить ссылку на сайт scrap экрана, вот источник вывода.удаление href с помощью проблемы с phpquery

<div class="FourDayForecastContainerInner"> 
<span class="day">Friday</span> 
    <a href="forecastPublicExtended.asp#Period4" target="_blank"> 
     <img src="./images/wimages/b_rain.gif" class="thumbnail"> 
    </a> 
    <span class="hi"> 
     <span style="width:24px;">Hi</span> 
     19/66 
    </span> 
    <span class="lo"> 
    <span style="width:24px;">Lo</span> 
     16/60 
    </span> 

    <span class="description"> 
    Sunny Breaks, showers 
    </span> 
</div> 

<div class="FourDayForecastContainerInner"> 
    <span class="day">Saturday</span> 

и вот мой код Im используя phpquery

$doc = phpQuery::newDocumentHTML($e); 
$containers = pq('.FourDayForecastContainerInner', $doc); 
foreach($containers as $container) { 
    $div = pq('span', $container); 
    $img = pq('img', $container); 
    $div->eq(0) 
     ->removeAttr('style') 
     ->addClass('day') 
     ->html( 
     pq('u', $div->eq(0)) 
     ->html() 
    ); 

    $img->eq(0) 
     ->removeAttr('style') 
     ->removeAttr('height') 
     ->removeAttr('width') 
     ->removeAttr('alt') 
     ->addClass('thumbnail') 
     ->html(pq('img', $img->eq(0))); 

    $div->eq(1) 
     ->removeAttr('style') 
     ->addClass('hi'); 

    $div->eq(3) 
     ->removeAttr('style') 
     ->addClass('lo'); 

    $div->eq(5) 
     ->removeAttr('style') 
     ->addClass('description'); 
} 
print $doc; 

меня удается удалить все атрибуты стилей ширина и т.д., но я не могу показаться, чтобы удалить A HREF спасибо большое за помощь

+1

Отформатируйте свой код; нажимайте каждую строку на четыре пробела, чтобы иметь ее как блок-код. (См. Http://stackoverflow.com/editing-help) – Gumbo

ответ

0

Я попробовал ш ваш образец кода, и он работает. Это выход

<div class='FourDayForecastContainerInner'> 

         <span class='day'>Friday</span> 

          <img src='./images/wimages/b_rain.gif' class='thumbnail'> 
         <span class='hi'> 
          <span style='width:24px;'>Hi</span> 
          19/66 
         </span> 
         <span class='lo'> 

          <span style='width:24px;'>Lo</span> 
          16/60 
         </span> 

         <span class='description'> 
          Sunny Breaks, showers 
        </span> 


       </div> 

       <div class='FourDayForecastContainerInner'> 

         <span class='day'>Saturday</span><div class='FourDayForecastContainerInner'> 

         <span class='day'>Friday</span> 

          <img src='./images/wimages/b_rain.gif' class='thumbnail'> 
         <span class='hi'> 
          <span style='width:24px;'>Hi</span> 

          19/66 
         </span> 
         <span class='lo'> 
          <span style='width:24px;'>Lo</span> 
          16/60 
         </span> 

         <span class='description'> 
          Sunny Breaks, showers 
        </span> 


       </div> 

       <div class='FourDayForecastContainerInner'> 

         <span class='day'>Saturday</span> 

То, как вы делаете, слишком длинное и утомительное. Используйте регулярные выражения для замены ссылки.

+0

Могу ли я просмотреть ваш код, чтобы я мог сравнивать и видеть, что я делаю неправильно, я не тот, с кем встречаюсь с php, что вы подразумеваете под регулярными выражениями, может быть, если вы можете показать мне, как вы его кодируете, я бы узнал, как регулярные выражения дают – cooldude

+0

, вместо того, чтобы добавлять новые, вам следует обновить свой ответ. –

0
$html = 'Your HTMl CODE HERE'; 

$exp = "~<a.*>~isU"; 
$html = preg_replace($exp,"", $html); 
$exp = "~</a>~isU"; 
$html = preg_replace($exp,"", $html); 

echo $html 

это будет полностью удалить ссылку

+0

он, похоже, не работает, вы можете проверить http://j2sdesign.com/rgw/article/20101222/NEWS01/712229951/0/example/ca-test .txt и источник просмотра, вы можете увидеть PHP-код, так как я добавил комментарий тег спасибо за вашу помощь Я был в состоянии удалить ссылку в div, но у меня проблемы с диапазоном. сайт Im scraping действительно сложно отобразить скрап-код его кодировки. – cooldude

0

Выполняет ли следующий код то, что вы хотите? (При добавлении в конце «для» петли)

$imghtml = pq('a', $container)->html(); 
pq($container)->prepend($imghtml); 
pq('a', $container)->remove(); 

Примечания: phpquery, кажется, не поддерживает Jquery отсоединения()

+0

Это не сработало – cooldude

+0

Вот результат, который я получаю с помощью этого кода:

Hi 19/66 Lo 16/60 Sunny Breaks, showers
sfk

+0

спасибо, что он сработал – cooldude

0

Я побежал в тот же самый вопрос, и я хотел бы поделиться своим решением. Моя цель состояла в том, чтобы удалить все теги из части заголовка некоторого кода вставки SoundCloud. HTML выглядит следующим образом:

<object height="81" width="100%"> 
... a bunch of embed code ... 
</object> 
<span> 
    <a href="http://soundcloud.com/minimal/mike-ink-silver">Mike Ink _ Silver</a> 
    by 
    <a href="http://soundcloud.com/minimal">MINIMAL</a> 
</span> 

В конце выше HTML, вы можете увидеть, что название имеет не только один, но два ссылки вокруг него. Моя цель состояла в том, чтобы убрать их.

Предполагая, что HTML присваивается PHP переменных $ текста, вот как я это сделал:

$doc = phpQuery::newDocument($text); 
$soundcloud_title = strip_tags((string) $doc->find('span')); 
print($soundcloud_title); 

// outputs: Mike Ink _ Silver by MINIMAL 

Я знаю, что это не прямо ответить на вопрос. На самом деле, я использую strip_tags для удаления ссылок вместо использования phpquery, но я надеялся, что это поможет другим программистам, которые ищут те же ответы, что и я.

Счастливое кодирование!

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