2013-09-22 5 views
2

Я читаю данные с веб-страницы, но мне нужна помощь в написании шаблонов для функции preg_replace.удалить тег span с определенным цветовым стилем php

Веб-страница содержит «Без способности, влияния или власти» внутри пролетных теги с цветом стиля = # 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

Вы имеете в виду данные страницы ' Без способности, влияния или мощности' и ** NOTHING ** else? –

+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

Я изменил шаблон на более короткую форму. Теперь вы можете удалить '(? )' тоже из шаблона, чтобы сделать короче. –

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