Вытащить кусочек из файла. Наверное через регулярные выражения?

lantastic

Новичок
Вытащить кусочек из файла. Наверное через регулярные выражения?

Привет!

Есть файл styles.css, где есть перечисление CSS-стилей, например

.jan { background: #000000; }
.feb { background: #FF00FF; }
.mar { background: #EE0000; }

Как мне вытащить из файла значения цветов по названию стилей? Чувствую, что через регулярные выражения, но сам разобраться не могу... Помогите, пожалуйста :)
 
1. что именно у тебя не получается?
2. файл имеет только тот формат что ты привел?
 
я, конечно, благотворительностью обычно не занимаюсь, но вот:

PHP:
<?
$text='
.jan { background: #000000; }
.feb { background: #FF00FF; }
.mar { background: #EE0000; }
';

preg_match_all("/\.(\S{3})\s*\{\s*background:\s*(#\S{6});\s*\}/isU", $text, $matches);
$cnt=0;
foreach ($matches[1] as $entry) $colors[$entry]=$matches[2][$cnt++];

?>

$colors будет вот таким:
PHP:
Array
(
    [jan] => #000000
    [feb] => #FF00FF
    [mar] => #EE0000
)
 
Mephistophel
А говоришь не занимаешься? Раз уж начал то хоть вопрос прочитай внимательно.
 
Diesel: обычно не занимаюсь.
Но на поставленный вопрос я ответил исчерпывающе.
 
Вариация на тему:
PHP:
$str = '.jan { background: #000000; color: #aqua; }
.feb 
{ 
	font-family: arial; background-color: #FF00FF;
}
.mar { background: #EE0000 top left; }';

preg_match_all("~\.([\w]+)\s+\{[^{]*background(-color)?\s*:[^;]*(\#[0-9a-f]{6})[^;]*;[^}]*\}~Uis",$str,$found,PREG_SET_ORDER);

$colors = array();
foreach ($found as $f) {
	$colors[$f[1]] = $f[3];
}
print_r($colors);

Единственное требование к таблице стилей - цвета фонов в виде #xxxxxx (в любом регистре).
 
Ребята, что вы пререкаетесь. Действительно, можно было кинуть ссылку на синтаксис регулярных выражений, но то что предоставили мне конкретный пример, куда интересней. Спасибо вам!
 
Я почему то почти уверен, что ты его даже не осмыслил и в следующий раз по малейшей проблеме (а как сделать то же самое, но с перламутровыми пуговицами?) прибежишь опять. Поэтому польза от приведения конкретного решения весьма сомнительна.
 
Вопрос даже не в конкретном авторе топика. Люди нашедшие этот топик через поиск, кому нужно то же самое, просто будут тупо копировать код, вместо того что бы попытаться разобраться самим.
 
Diesel, прошу прощения, но я не согласен.

Разумеется, вначале тупо скопируют. Потом поймут, что их задаче он соответствует не на 100%. Попробуют поменять одно, другое. Возникнет потребность залезть в ман и разобраться, на что влияет тот или иной параметр/модификатор, и вообще вникнуть в предмет более основательно.

По-моему, делать так первые шаги в новой для себя области гораздо эффективнее, чем сперва погружаться с головой в теорию, а потом долго-долго искать в дебрях новых терминов и сущностей решение элементарной задачи. Сугубо ИМХО.

P.S. а уж какое удовольствие самому найти и исправить в чужом примере ошибку!
 
Возникнет потребность залезть в ман и разобраться
Не будь наивным. Возникнет потребность прийти сюда и создать еще один топик типа "исправьте мне ошибку".
погружаться с головой в теорию, а потом долго-долго искать в дебрях новых терминов и сущностей решение элементарной задачи
А вот для этого и предназначен форум. Пролезьть через эти дебри, здесь с удовольствеем помогут, зато в голове останется гораздо больше.
 
Это все, конечно, так, но человеку, впервые пришедшему в веб-программирование, все же как-то приятнее отталкиваться от чего-то простого и приземленного. А то многообразие технологий, подходов и аббревиатур может поначалу просто вызвать ступор. Потом уже, освоившись, поняв, что к чему и как что с чем соотносится, можно начинать лезть в дебри - самостоятельно и/или с помощью форума. Не скажу за всех, сужу по собственному недавнему прошлому, да и настоящему)

А что насчет халявщиков, то мне кажется, что их число не убавится от того, если на форуме не будет конкретных примеров. Остается только посочувствовать модераторам и извиниться перед ними за этот дикий оффтоп...
 
Действительно, времени чтобы разобраться в регулярных выражениях нету... а они очень полезны. Но нужно быстрее запускать проект!

Похожее было в законах Мерфи: у вас есть время для решения проблем, которые отнимают у вас все время?
 
Сверху