2013-09-22 74 views
2

我正在閱讀網頁中的數據,但我需要幫助爲preg_replace函數編寫模式。刪除具有某種顏色風格的span標籤php

該網頁包含「沒有能力,影響或力量」 span標籤的內部風格顏色=#767676

我希望能夠只輸出「沒有能力,影響或權力」,不跨標籤。有什麼辦法可以根據span標籤中的樣式顏色來做到嗎?因爲文件中有許多其他的span標籤。

這是我寫的代碼:

$link="http://www.myWebsite.com"; 
$inputlink = @file_get_contents($link) or die('Could not access file: $link'); 
    // To output the span tag that has style=color:#767676 
$outputlink = preg_replace('/(<[^>]+) style="color:#767676"/i', '$1', $inputlink); 
    // To remove the span tags 
$string = preg_replace("/<span[^>]+\>/i", "", $outputlink); 
echo strip_tags($string);//OUTPUT : Without ability, influence, or power 

我得到了整個網站的內容輸出。我也非常感謝你能否提供一個我可以學習寫作模式的鏈接。

感謝

+0

您的意思是網頁數據是否爲'&span>#767676>沒有能力,影響力或者力量'和**沒什麼其他? –

+0

不,這是一個包含許多其他span和div標籤的網頁。但我想不出任何其他方式來提取這個特定的文本:「沒有能力,影響力或力量」,所以我在想,是否有一種方法可以根據它的顏色來提取它。 – Laura

+0

您使用過'strip_tags()',它刪除了span和其他標籤,那麼使用'preg_replace()'的原因是什麼? –

回答

1

您可以使用此:

<?php 

$link = 'http://www.myWebsite.com'; 
$inputlink = @file_get_contents($link) or die('Could not access file: $link'); 

我認爲在網頁 「http://www.myWebsite.com」 是這樣的:

<span style="color:#767676">Without ability, influence, or power</span> <span>if you see this part or see last part in gray color, your regexp is wrong!</span> 

現在讓我們寫一些正則表達式

$pattern = '/<span style="color:#767676">([^<]+)(?<!<\/span>)<\/span>/'; 
preg_match($pattern, $text, $matches); 
echo $matches[1]; 

它會輸出Without ability, influence, or power沒有<span>標籤。

+0

我將模式更改爲更短的形式。現在你可以從模式中刪除'(?)'來縮短。 –