2011-01-04 7 views
0

こんにちは私はここでは出力ソースのスクラップサイトのリンクを削除する必要があります。phpqueryの問題を使用してhrefを削除します。

<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; 

を使用している私は、すべてのスタイルの高さ幅などを属性を削除するために管理してきたが、私はHREF はそんなにありがとう取り除くように見えることはできませんあなたの助け

+1

コードをフォーマットしてください。すべての行を4つの空白でインデントしてブロックコードにします。 (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でそのfamilliarではありませんあなたは私がどのようにコード化しているかを示すことができます。私は正規表現にどのように感謝しますか? – 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 

のために、これは完全に私はのwiそれを試してみました

+0

チェックできますか?http://j2sdesign.com/rgw/article/20101222/NEWS01/712229951/0/example/ca-test .txtとソースを見るとコメントタグを追加して以来PHPコードを見ることができます助けてくれてありがとう私はdivのリンクを削除することができましたが、スパンに問題があります。サイトImのスクレイピングは、コードのスクラップをスクリーニングすることは本当に難しいです – cooldude

0

次のコードは、あなたが望むことをしていますか?

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

注意(「for」ループの最後に追加したとき):phpqueryはjqueryの切り離しをサポートしていないようだ()

+0

これは動作しませんでした – cooldude

+0

私はこのコードで得た結果です:

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

+0

ありがとうございました – cooldude

0

私は同じ問題に走ったと私は私の解決策を共有したいと思いました。私の目標は、SoundCloud埋め込みコードのタイトル部分からすべてのタグを削除することでした。 HTMLはこのように見えた:上記の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> 

、あなたはタイトルが1つのみならずその周りにリンクしていることがわかります。私の目標はそれらを取り除くことでした。 HTMLをPHP変数$テキストに割り当てられていると仮定すると

は、ここで私はそれをやった方法は次のとおりです。

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

// outputs: Mike Ink _ Silver by MINIMAL 

私は、これは直接質問に答えていないことを知っています。実際には、phpqueryを使う代わりにstrip_tagsを使ってリンクを削除していますが、同じ答えを探している他のコーダーを助けることができると期待しました。

ハッピーコーディング!

関連する問題