Форумы портала PHP.SU » » Вопросы новичков » Кто ищет? - курим косяк

Страниц (1): [1]
 

1. reslear - 23 Июля, 2011 - 01:09:30 - перейти к сообщению
Всем привет!

у меня к примеру есть
PHP:
скопировать код в буфер обмена
  1. $gg = '
  2. .bf {border-style: solid;
  3. border-color: #FF0066;
  4. border-width: 1px;
  5. padding: 2px 4px;
  6. }
  7. .fefe {border-style: solid;
  8. border-color: #FF0055;
  9. border-width: 5px;
  10. display: none;
  11. }
  12. ';


нужно найти class(к примеру .bf в нём solid , #FF0066 , 1px и остальное padding: 2px 4px;) всё это кинуть в переменную
что бы получить например :
CODE (html):
скопировать код в буфер обмена
  1. border: 1px solid #b8b8b8;


PHP:
скопировать код в буфер обмена
  1. $gg = $class.'{border:'.$size.' '.$line.' '.$color.$ostalnoe.'}';


проблема в том что код может быть разный это и класс и размер и ещё вот так может
быть
CODE (html):
скопировать код в буфер обмена
  1. font-family: Verdana, Arial, Helvetica, sans-serif;
  2. font-size: 10pt;
  3. font-weight: bold


меняться на

CODE (html):
скопировать код в буфер обмена
  1. font:bold 10pt Verdana,Arial,Helvetica,sans-serif


Зарание большое спасибо, + от меня, всех кто помогал запишу в авторы!
2. OrmaJever - 23 Июля, 2011 - 01:30:10 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. $gg = '
  2. .bf {border-style: solid;
  3. border-color: #FF0066;
  4. border-width: 1px;
  5. padding: 2px 4px;
  6. }
  7. .fefe {border-style: solid;
  8. border-color: #FF0055;
  9. border-width: 5px;
  10. display: none;
  11. }
  12. ';
  13. $class = '.fefe';
  14. preg_match('#'.$class.'(\s+)?\{(.+?)\}#is', $gg, $param);
  15. $str = explode(';', str_replace("\n", '', $param[2]));
  16. for($i=0;$i<sizeof($str);++$i) {
  17.         list($key, $value) = explode(':', $str[$i]);
  18.    if(strpos($key, '-') !== false) {
  19.         list($a,$b) = explode('-', $key);
  20.         $x[$a][$b] = $value;
  21.    }
  22. }
  23. print_r($x);

как вариант получить двухмерный масив такого вида
CODE (htmlphp):
скопировать код в буфер обмена
  1. (
  2.     [border] => Array
  3.         (
  4.             [style] =>  solid
  5.             [color] =>  #FF0055
  6.            [width] =>  5px
  7.         )
  8.  
  9. )
3. reslear - 23 Июля, 2011 - 20:30:54 - перейти к сообщению
Спасибо) ок, а какая переменная для получения?? переменная[border][style] ????
а и ещё $class = '.fefe'; может быть разной и я не узнаю какой класс и ещё может быть
$class = '#fefe'; тоесть id как мне сделать поиск от # или . до {
4. OrmaJever - 23 Июля, 2011 - 20:38:14 - перейти к сообщению
reslear пишет:
Спасибо) ок, а какая переменная для получения?? переменная[border][style] ????

ну получится двухмерный масив
PHP:
скопировать код в буфер обмена
  1. $x['border']['style']
  2. $x['border']['color']
  3. $x['border']['width']

если клас будет содержать несколько таких свойств, например
CODE (htmlphp):
скопировать код в буфер обмена
  1. .fefe {border-style: solid;
  2. border-color: #FF0055;
  3. border-width: 5px;
  4. display: none;
  5. font-family: Verdana, Arial, Helvetica, sans-serif;
  6. font-size: 10pt;
  7. font-weight: bold
  8. }

то масив будет такой
CODE (htmlphp):
скопировать код в буфер обмена
  1. (
  2.     [border] => Array
  3.         (
  4.             [style] =>  solid
  5.             [color] =>  #FF0055
  6.            [width] =>  5px
  7.         )
  8.  
  9.     [font] => Array
  10.         (
  11.             [family] =>  Verdana, Arial, Helvetica, sans-serif
  12.             [size] =>  10pt
  13.             [weight] =>  bold
  14.         )
  15.  
  16. )

(Добавление)
reslear пишет:
а и ещё $class = '.fefe'; может быть разной и я не узнаю какой класс и ещё может быть
$class = '#fefe'; тоесть id как мне сделать поиск от # или . до {

а вы пробовали? Подмигивание так тоже должно работать
5. reslear - 23 Июля, 2011 - 20:47:53 - перейти к сообщению
ну я так и ставил $x['border']['style'].$x['border']['color'].$x['border']['width']
получаю только solid
что -то это
PHP:
скопировать код в буфер обмена
  1. $txt='.gert{';
  2.  
  3.   $re1='.*?';
  4.   $re2='((?:[a-z][a-z]+))';
  5.  
  6.   if ($c=preg_match_all ("/".$re1.$re2."/is", $txt, $matches))
  7.   {
  8.       $word1=$matches[1][0];
  9.       print "($word1) \n";
  10.   }
  11.  


этим я получаю gert

как мне совместить

 

Powered by ExBB FM 1.0 RC1