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
Форумы портала PHP.SU :: Версия для печати :: Преобразовать текст в массив
Форумы портала PHP.SU » PHP » Регулярные выражения » Преобразовать текст в массив

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

1. lex-romanow - 12 Октября, 2016 - 19:38:18 - перейти к сообщению
Всем привет. Нужна ваша помощь в написании регулярного выражения, дабы с данного текста получить нужный массив. Спасибо!

CODE (html):
скопировать код в буфер обмена
  1. <p>Раздел содержит часто встречающиеся вопросы от клиентов, на которые мы дали исчерпывающие ответы.</p><ul id="question-answer"><li>Первый вопрос<br></li><ul><li>Первый абзац ответа на первый вопрос<br></li><li>Второй абзац ответа на первый вопрос<br></li></ul><li>Второй вопрос</li><ul><li>Первый абзац ответа на второй вопрос</li></ul><li>Третий вопрос<br></li></ul>

CODE (no):
скопировать код в буфер обмена
  1. Array
  2. (
  3.     [0] => Array
  4.         (
  5.             [question] => Первый вопрос
  6.             [answer] => Array
  7.                 (
  8.                     [0] => Первый абзац ответа на первый вопрос
  9.                     [1] => Второй абзац ответа на первый вопрос
  10.                 )
  11.  
  12.         )
  13.  
  14.     [1] => Array
  15.         (
  16.             [question] => Второй вопрос
  17.             [answer] => Array
  18.                 (
  19.                     [0] => Первый абзац ответа на второй вопрос
  20.                 )
  21.  
  22.         )
  23.  
  24.     [2] => Array
  25.         (
  26.             [question] => Третий вопрос
  27.             [answer] => Array
  28.                 (
  29.                 )
  30.  
  31.         )
  32.  
  33. )
2. ytrewq123 - 13 Октября, 2016 - 22:22:30 - перейти к сообщению
Извините регуляркой не помогу. Но посмотрев на ваш текст. Подумал, а почему не попробовать. XML.
Вроде получилось.
Одно но, этот текст по видимому будет меняться динамически, поэтому надо подумать, как с закрывающим тегом корня. Это не тяжело. Просто зависит как у вас пишется. И тег <br/> так, ну это просто поменять в ХТМЛ
А так вроде как заказывали.
Может кто что ещё придумает.

PHP:
скопировать код в буфер обмена
  1.  
  2. $stroka = '<korenj>
  3. <p>Раздел содержит часто встречающиеся вопросы от клиентов, на которые мы дали исчерпывающие ответы.</p>
  4. <ul id="question-answer"><li>Первый вопрос<br/></li><ul>
  5. <li>Первый абзац ответа на первый вопрос<br/></li>
  6. <li>Второй абзац ответа на первый вопрос<br/></li>
  7. </ul>
  8.    <li>Второй вопрос</li>
  9.    <ul><li>Первый абзац ответа на второй вопрос</li></ul>
  10.    <li>Третий вопрос<br/></li></ul></korenj>';
  11.  
  12.    
  13.    
  14.    $xml = simplexml_load_string($stroka);  
  15.  
  16.     for($z=0; $z<count($xml->ul->li); $z++)
  17.    {
  18.      $mass = (array)$xml->ul->ul[$z];
  19.     // if(count($mass === 0)) $mass['li'] = '';
  20.       $otvet[$z]['otvet'] =(array)$mass['li'];
  21.       $f =['vopros'=>(string)$xml->ul->li[$z]];
  22.       $otvet[$z] = array_merge($f,$otvet[$z]);
  23.    }
  24.   echo '<pre>';
  25.  print_r($otvet);
  26.  

 

Powered by ExBB FM 1.0 RC1