Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: обрамление скобками {}

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
scuter
Отправлено: 17 Июля, 2008 - 13:45:34
Post Id



Посетитель


Покинул форум
Сообщений всего: 282
Дата рег-ции: Янв. 2008  


Помог: 0 раз(а)




не как не получается вытащить строку нужным образом,
вот строка,
Цитата:

{blablabla{blablabla{blablabla}blablabla}blablabla{blablabla}blablabla{blablabla}blablabla}

мне надо получить массив
PHP:
скопировать код в буфер обмена
  1.  
  2. array('blablabla{blablabla{blablabla}blablabla}blablabla{blablabla}blablabla{blablabla}blablabla',
  3. 'blablabla{blablabla}blablabla', 'blablabla', 'blablabla');
  4.  

на "blablabla" можете не обращать внимание, это какой то текст.
 
 Top
valenok
Отправлено: 17 Июля, 2008 - 15:12:23
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




От мельтешения я не совсем разоабрался что именно должно получиться, но похоже это оно:
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. function vnc($a){return @iconv("UTF-8","WINDOWS-1251",$a);}
  4. function s2h($a)//JSON-string to PHP-hash
  5. {
  6.   $a=urldecode($a);
  7.   $a=stripcslashes(vnc($a));
  8.   $mode=0;//режим символа -- 1->строка  0->не строка
  9.   $res="";
  10.   $p="";//предыдущий символ    
  11.   $i=0;
  12.   for($i=0;$i<strlen($a);$i++)
  13.   {            
  14.     $v=$a{$i};
  15.     if($v=='"')
  16.     {
  17.       if($mode==1 && $p!='\\')$mode=0;else $mode=1;
  18.       $res.=$v;
  19.       $p=$v;
  20.       continue;      
  21.     }            
  22.     if($mode==1)$res.=$v;//строка
  23.     else
  24.     {//управляющие элементы
  25.      if($v=="{") $res.="array(";else
  26.      if($v=="}") $res.=")";else
  27.      if($v==":") $res.="=>";else
  28.      if($v==",") $res.=",";else
  29.      $res.=$v;    
  30.     }        
  31.     $p=$v;      
  32.   }    
  33.   eval('$x='.$res.";");  
  34.   return $x;        
  35. }


-----
Truly yours, Sasha.
 
My status
 Top
scuter
Отправлено: 17 Июля, 2008 - 22:47:59
Post Id



Посетитель


Покинул форум
Сообщений всего: 282
Дата рег-ции: Янв. 2008  


Помог: 0 раз(а)




нет тут преобразование из JSON формата,
а мне нужно,
вытащить из текста строку находящуюся в скобках {},
при этом там может быть вложеность, т.е. внутри одних скобок могут быть другие скобки.
 
 Top
valenok
Отправлено: 18 Июля, 2008 - 01:57:46
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




Тогда используйте метки начала и конца строки в регулярке

PHP:
скопировать код в буфер обмена
  1. <?
  2. preg_match(/^{(.*)}$/i,$str,$matches);
  3. echo $matches[0];


-----
Truly yours, Sasha.
 
My status
 Top
scuter
Отправлено: 18 Июля, 2008 - 19:28:57
Post Id



Посетитель


Покинул форум
Сообщений всего: 282
Дата рег-ции: Янв. 2008  


Помог: 0 раз(а)




я конечно не специалист по регулярным,
но ^ означает начало строки,
$ означает конец строки,
а мне нужно из такого текста
CODE (text):
скопировать код в буфер обмена
  1. str_1{str_2{str_3}str_4}str_5{str_6}

вытащить такие данные
CODE (text):
скопировать код в буфер обмена
  1. 'str_2{str_3}str_4', 'str_6', 'str_3'

я просто не могу понять как вложеные элементы вытащить.
 
 Top
valenok
Отправлено: 18 Июля, 2008 - 19:44:03
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




Так чтоб не отдель str_3 , скорее всего идти по строке и считать скобочки по уровням вложения, открыт первый уровень дальше всё в массив, открыт второй уровень. продолжаем в тот же массив, закрыт второй уровень, продолжаем всё в массив, закрыт первый уровень, создаём след элемент массива и по новой.

Только так наверное.


-----
Truly yours, Sasha.
 
My status
 Top
999
Отправлено: 20 Октября, 2008 - 19:26:41
Post Id


Новичок


Покинул форум
Сообщений всего: 1
Дата рег-ции: Окт. 2008  


Помог: 0 раз(а)




лзльшщзовартдлмиьитьрод
(Добавление)
сиськи,пиписьки,яички,хуй,сосочки,лобок!!!
(Добавление)
ой-ой...эт не я
 
 Top
Champion Супермодератор
Отправлено: 22 Октября, 2008 - 16:21:35
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




999 Больной?
(Добавление)
scuter
preg_match_all('/{[^{]*}/U',$str, $matches);
Хотя это не совсем то

(Отредактировано автором: 22 Октября, 2008 - 16:38:55)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Регулярные выражения »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB