Splits text in ul with id of string content

Asked

Viewed 62 times

0

The laws are actually a list of items, with sub-items.

I copied the code below and the example is in this link http://preliminarte.com.br/converter.php

I was able to make php read the plain text file and assign a ul with the article number id, or title number id.

However,

1) In Article 245, he assumed an ID of "Dryno found".

2) And the numbering of articles after 999 is only 1.

3) The id should join the hierarchy, example id="title1_capitulo2_article3".

4) Is there any other way to do this programming, or any hint or criticism about my reasoning.

I thank you all

                // Variável com a lei
                $arquivo = 'cf.txt';

                // Variável das palavras chaves
                $encontraTitulo = "TÍTULO";
                $encontraCapitulo = "CAPÍTULO";
                $encontraSecao = "Seção";
                $encontraSubsecao = "Subseção";
                $encontraArtigo = "Art.";

                // Lê conteúdo do txt
                $documento = file_get_contents($arquivo);

                // Converte em linhas
                $linhas = explode("\n", $documento);


                foreach ($linhas as $novalinha) {


                  // Esta parte do código não funcionou online, só local funciona
                  // Limpa linhas vazias
                  if ( empty( rtrim( $novalinha ) ) ) {
                      continue;
                  }

                    // Envolve cada linha em um parágrafo
                    $novalinhas =   "<p>" . $novalinha . "</p>"; 

                   // Verifica se tem o texto título na linha
                   $procuraTitulo = strpos($novalinhas,$encontraTitulo);

                   if ($procuraTitulo === false){
                      // Verifica se tem o texto capítulo na linha
                      $procuraCapitulo = strpos($novalinhas,$encontraCapitulo);

                      if ($procuraCapitulo === false){

                         // Verifica se tem o texto Seção na linha
                         $procuraSecao = strpos($novalinhas,$encontraSecao);

                         if ($procuraSecao === false){

                            // Verifica se tem o texto Subseção na linha
                            $procuraSubsecao = strpos($novalinhas,$encontraSubsecao);

                            if ($procuraSubsecao === false){

                               // Verifica se tem o texto Artigo na linha
                               $procuraArtigo = strpos($novalinhas,$encontraArtigo);

                               if ($procuraArtigo === false){

                                  echo $novalinhas;      

                               } else {

                                  // Captura o número do artigo para atribuir na ID
                                  preg_match('/[0-9]+/', $novalinhas, $matches);
                                  $artigo = implode(' ',$matches);

                                  echo "</ul>";        
                                  echo '<ul id="artigo' . $artigo . '" class="artigo">';
                                  echo "<li>";                    
                                  echo $novalinhas;
                                  echo "</li>";  
                               }     

                            } else {

                               // Captura o número romano da Subseção para atribuir na ID
                               $arr = explode('Subseção ', $novalinhas);
                               $subsecao = preg_replace('/\s+/','',$arr[1]);

                              switch (trim(strip_tags($subsecao))){
                                case 'I':
                                  $subsecao = '1';
                                  break;
                                case 'II':
                                  $subsecao = '2';
                                  break;
                                case 'III':
                                  $subsecao = '3';
                                  break;    
                               default:
                                  $subsecao = 'Não encontrou';
                              }

                               echo "</ul>";        
                               echo '<ul id="subsecao' . $subsecao . '" class="subsecao">';  
                               echo "<li>";                      
                               echo $novalinhas;  
                               echo "</li>"; 
                            }    

                         } else {

                               // Captura o número romano da seção para atribuir na ID
                               $arr = explode('Seção ', $novalinhas);
                               $secao = preg_replace('/\s+/','',$arr[1]);

                              switch (trim(strip_tags($secao))){
                                case 'I':
                                  $secao = '1';
                                  break;
                                case 'II':
                                  $secao = '2';
                                  break;
                                case 'III':
                                  $secao = '3';
                                  break;  
                                case 'IV':
                                  $secao = '4';
                                  break;
                                case 'V':
                                  $secao = '5';
                                  break; 
                                case 'VI':
                                  $secao = '6';
                                  break; 
                                case 'VII':
                                  $secao = '7';
                                  break;
                                case 'VIII':
                                  $secao = '8';
                                  break;
                                case 'IX':
                                  $secao = '9';
                                  break;                                                                                                                        
                               default:
                                  $secao = 'Não encontrou';
                              }

                               echo "</ul>";        
                               echo '<ul id="secao' . $secao . '" class="secao">';
                               echo "<li>";                        
                               echo $novalinhas; 
                               echo "</li>";                  
                         }     

                      } else {


                               // Captura o número romano do capítulo para atribuir na ID
                               $arr = explode('CAPÍTULO ', $novalinhas);
                               $cap = preg_replace('/\s+/','',$arr[1]);

                              switch (trim(strip_tags($cap))){
                                case 'I':
                                  $cap = '1';
                                  break;
                                case 'II':
                                  $cap = '2';
                                  break;
                                case 'III':
                                  $cap = '3';
                                  break;  
                                case 'IV':
                                  $cap = '4';
                                  break;
                                case 'V':
                                  $cap = '5';
                                  break; 
                                case 'VI':
                                  $cap = '6';
                                  break; 
                                case 'VII':
                                  $cap = '7';
                                  break;
                                case 'VIII':
                                  $cap = '8';
                                  break;                                                                                                                      
                               default:
                                  $cap = 'Não encontrou';
                              }

                               echo "</ul>";        
                               echo '<ul id="capitulo' . $cap . '" class="capitulo">';       
                               echo "<li>";                 
                               echo $novalinhas;          
                               echo "</li>";                
                      }

                   } else {

                               // Captura o número romano do título para atribuir na ID
                               $arr = explode('TÍTULO ', $novalinhas);
                               $tit = preg_replace('/\s+/','',$arr[1]);

                              switch (trim(strip_tags($tit))){
                                case 'I':
                                  $tit = '1';
                                  break;
                                case 'II':
                                  $tit = '2';
                                  break;
                                case 'III':
                                  $tit = '3';
                                  break;  
                                case 'IV':
                                  $tit = '4';
                                  break;
                                case 'V':
                                  $tit = '5';
                                  break; 
                                case 'VI':
                                  $tit = '6';
                                  break; 
                                case 'VII':
                                  $tit = '7';
                                  break; 
                                case 'VIII':
                                  $tit = '8';
                                  break;  
                                case 'IX':
                                  $tit = '9';
                                  break;  
                                case 'X':
                                  $tit = '10';
                                  break;                                                                                                                                                           
                               default:
                                  $tit = 'Não encontrou';
                              }

                               echo "</ul>";        
                               echo '<ul id="titulo' . $tit . '" class="titulo">';     
                               echo "<li>";                   
                               echo $novalinhas; 
                               echo "</li>"; 
                   }

                }

Update 28/04/2015

I studied the code again and came up with a better result, if anyone can analyze

            function romano($romano) {
                switch (trim(strip_tags($romano))){
                  case 'I':
                    $romano = '1';
                    break;
                  case 'II':
                    $romano = '2';
                    break;
                  case 'III':
                    $romano = '3';
                    break;  
                  case 'IV':
                    $romano = '4';
                    break;
                  case 'V':
                    $romano = '5';
                    break; 
                  case 'VI':
                    $romano = '6';
                    break; 
                  case 'VII':
                    $romano = '7';
                    break;
                  case 'VIII':
                    $romano = '8';
                    break;
                  case 'IX':
                    $romano = '9';
                    break;  
                  case 'X':
                    $romano = '10';
                    break;   
                  case 'XI':
                    $romano = '11';
                    break; 
                  case 'XII':
                    $romano = '12';
                    break;     
                  case 'XIII':
                    $romano = '13';
                    break;     
                  case 'XIV':
                    $romano = '14';
                    break;  
                  case 'XV':
                    $romano = '15';
                    break; 
                  case 'XVI':
                    $romano = '16';
                    break; 
                  case 'XVII':
                    $romano = '17';
                    break;     
                  case 'XVIII':
                    $romano = '18';
                    break;     
                  case 'XIX':
                    $romano = '19';
                    break;  
                  case 'XX':
                    $romano = '20';
                    break;                                                
                  case 'ÚNICO':
                    $romano = '_unico';
                    break;  
                  case 'COMPLEMENTAR':
                    $romano = '_complementar';
                    break;
                  case 'G':
                    $romano = '_geral';
                    break;  
                  case 'E':
                    $romano = '_especial';
                    break;                                                                                                                                               
                 default:
                    $romano = '_especial';
                }
                return $romano;
            } 

            // Variável das palavras chaves
            $encontraParte = "P A R T E";
            $encontraLivro = "LIVRO";
            $encontraTitulo = "TÍTULO";
            $encontraSubtitulo = "SUBTÍTULO";
            $encontraCapitulo = "CAPÍTULO";
            $encontraSecao = "Seção";
            $encontraSubsecao = "Subseção";
            $encontraArtigo = "Art.";

            // Lê conteúdo do txt
            $documento = file_get_contents($arquivo);


            $documento = preg_replace("/(^[\r\n]*|[\r\n]+)[\s\t]*[\r\n]+/", "\n", $documento);
            // Converte em linhas
            $linhas = explode("\n", $documento);

            foreach ($linhas as $novalinha) {

                // Envolve cada linha em um parágrafo
                $novalinhas =   "<li><p>" . $novalinha . "</p></li>"; 

               // Verifica se tem o texto Linha na linha
               $procuraParte = strpos($novalinhas,$encontraParte);

               if ($procuraParte === false){

               // Verifica se tem o texto Linha na linha
               $procuraLivro = strpos($novalinhas,$encontraLivro);

               if ($procuraLivro === false){

                 // Verifica se tem o texto título na linha
                 $procuraTitulo = strpos($novalinhas,$encontraTitulo);

                 if ($procuraTitulo === false){

                   // Verifica se tem o texto Subtítulo na linha
                   $procuraSubtitulo = strpos($novalinhas,$encontraSubtitulo);

                   if ($procuraSubtitulo === false){

                      // Verifica se tem o texto capítulo na linha
                      $procuraCapitulo = strpos($novalinhas,$encontraCapitulo);

                      if ($procuraCapitulo === false){

                       // Verifica se tem o texto Seção na linha
                       $procuraSecao = strpos($novalinhas,$encontraSecao);

                       if ($procuraSecao === false){

                          // Verifica se tem o texto Subseção na linha
                          $procuraSubsecao = strpos($novalinhas,$encontraSubsecao);

                          if ($procuraSubsecao === false){

                             // Verifica se tem o texto Artigo na linha
                             $procuraArtigo = strpos($novalinhas,$encontraArtigo);

                             if ($procuraArtigo === false){

                                echo $novalinhas;      

                             } else {

                                // Captura o número do artigo para atribuir na ID                  
                                $artigo =  explode(" ", $novalinhas);
                                $caracteres = array("º",".");
                                $artigos = str_replace($caracteres, "", $artigo[1]);

                                echo "</ul>";        
                                echo '<ul id="artigo' . $artigos . '" class="artigo">';                   
                                echo $novalinhas;
                             }     

                          } else {

                             // Captura o número romano da Subseção para atribuir na ID
                            $sub =  explode(" ", $novalinhas);
                            $caracteres = array("Subseção");
                            $subs = romano($sub[1]);   

                            echo "</ul>";        
                            echo '<ul id="subsecao' . $subs . '" class="subsecao">';                     
                            echo $novalinhas;  
                          }    

                       } else {

                             // Captura o número romano da Subseção para atribuir na ID
                            $sub =  explode(" ", $novalinhas);
                            $caracteres = array("Seção");
                            $subs = romano($sub[1]);   

                            echo "</ul>";        
                            echo '<ul id="secao' . $subs . '" class="secao">';                      
                            echo $novalinhas;                 
                       }     

                    } else {

                             // Captura o número romano da Subseção para atribuir na ID
                            $sub =  explode(" ", $novalinhas);
                            $caracteres = array("CAPÍTULO");
                            $subs = romano($sub[1]);  

                            echo "</ul>";        
                            echo '<ul id="capitulo' .  $subs . '" class="capitulo">';                      
                            echo $novalinhas;                        
                    }

                 } else {

                            $sub =  explode(" ", $novalinhas);
                            $caracteres = array("SUBTÍTULO");
                            $subs = romano($sub[1]);  

                            echo "</ul>";        
                            echo '<ul id="subtitulo' . $subs . '" class="subtitulo">';                      
                            echo $novalinhas; 
                 } 

               } else {

                            $sub =  explode(" ", $novalinhas);
                            $caracteres = array("TÍTULO");
                            $subs = romano($sub[1]);  

                            echo "</ul>";        
                            echo '<ul id="titulo' . $subs . '" class="titulo">';                      
                            echo $novalinhas; 
                 } 

               } else {

                            $sub =  explode(" ", $novalinhas);
                            $caracteres = array("LIVRO");
                            $subs = romano($sub[1]);  

                            echo "</ul>";        
                            echo '<ul id="livro' . $subs . '" class="livro">';                      
                            echo $novalinhas; 

                            }
                 } else {

                            $sub =  explode(" ", $novalinhas);
                            $caracteres = array("PARTE");
                            $subs = romano($sub[8]);  

                            echo "</ul>";        
                            echo '<ul id="parte' . $subs . '" class="parte">';                      
                            echo $novalinhas;                
                 }

            }
  • Interesting to see the file cf.txt, has how to show in Paste bin

  • The file is at this link http://preliminarte.com.br/cf.txt What is Paste bin?

  • I looked at the txt file, the error happens because the file leaves the logic of your script. You will have to do another reading by not identifying in the case of the switch function, when you fall into the default, try to do another reading and display the data, so you can treat this error. If you look at the source generated by your script you will see that there are many "Can’t find" in the id. Try there and come back here again and tell what you got.

  • About the id number only go up to 999. I changed to preg_match_all('! d!', $newlines, $Matches); $article = (int)implode('',$Matches[0]);

No answers

Browser other questions tagged

You are not signed in. Login or sign up in order to post.