1
I’m still new to PHP, so whoever helps, I ask for patience, kkk.
The foreach
is at the end of the code, before it’s just the text of the articles
I made a foreach
to concatenate the ID of a single element <ul>
, he does the right concatenation, but skips a passage.
<?php
// Variável das palavras chaves
$encontraTitulo = "TÍTULO";
$encontraCapitulo = "CAPÍTULO";
$encontraArtigo = "Art.";
$concatenaHierarquia = "";
// Variável dos valores para concatenar
$valorTitulo = "";
$valorCapitulo = "";
$valorArtigo = "";
// Lê conteúdo do txt
$documento = 'TÍTULO 1
Dos Princípios Fundamentais
Art. 1º A República Federtico.
Parágrafo único. Todo o poder emana do povo, que o exerce por meio de representantes eleitos ou diretamente, nos termos desta Constituição.
Art. 2º São Poderes da União, independentes e harmônicos entre si, o Legislativo, o Executivo e o Judiciário.
Art. 3º Constituem objetivos fundaação e reduzir as desigualdades sociais e regionais;
IV - promover o bem de todos, sem preconceitos de origem, raça, sexo, cor, idade e quaisquer outras formas de discriminação.
Art. 4º A República Federativao Brasil buscará a integração econômica, política, social e cultural dos povos da América Latina, visando à formação de uma comunidade latino-americana de nações.
TÍTULO 2
Dos Direitos e Garantias Fundamentais
CAPÍTULO 1
DOS DIREITOS E DEVERES INDIVIDUAIS E COLETIVOS
Art. 5º Todos são iguais perante a lei,al Internacional a cuja criação tenha manifestado adesão. (Incluído pela Emenda Constitucional nº 45, de 2004)
CAPÍTULO 2
DOS DIREITOS SOCIAIS
Art. 6º São direitocitucional nº 64, de 2010)
Art. 7º São direitos dos trabalhadores urbanos
Art. 11. Nas empresas de mais de duzentos empregados, é assegurada a eleição de um representante destes com a finalidade exclusiva de promover-lhes o entendimento direto com os empregadores.
CAPÍTULO 3
DA NACIONALIDADE
Art. 12. São brasilei
CAPÍTULO 4
DOS DIREITOS POLÍTICOS
Art. 14. A soberania popular será e.
Art. 16. A lei que alterar o processo eleitoral entrará em vigor na data de sua publicação, não se aplicando à eleição que ocorra até um ano da data de sua vigência. (Redação dada pela Emenda Constitucional nº 4, de 1993)
CAPÍTULO 5
DOS PARTIDOS POLÍTICOS
Art. 17. É livre a
TÍTULO 3
Da Organização do Estado
CAPÍTULO 1
DA ORGANIZAÇÃO POLÍTICO-ADMINISTRATIVA
Art. 18. A organização polít
CAPÍTULO 2
DA UNIÃO
Art. 20. São bens da Una de lei federal sobre normas gerais suspende a eficácia da lei estadual, no que lhe for contrário.
CAPÍTULO 3
DOS ESTADOS FEDERADOS
Art. 25. Os Estados organizam-se e regem-se pelas Constituições e leis que adotarem, observados os princípios desta Constituição.
§ 1º - São reservadasei
Art. 66. A Casa na qual tenhanado a promulgará, e, se este não o fizer em igual prazo, caberá ao Vice-Presidente do Senado fazê-lo.
Art. 67. A matéria constante de projeto de lei rejeitado somente poderá constituir objeto de novo projeto, na mesma sessão legislativa, mediante proposta da maioria absoluta dos membros de qualquer das Casas do Congresso Nacional.';
// Função para limpar linhas em branco
$documento = preg_replace("/(^[\r\n]*|[\r\n]+)[\s\t]*[\r\n]+/", "\n", $documento);
// Converte em linhas
$linhas = explode("\n", $documento);
foreach($linhas as $novalinha) {
// Variável dos valores para concatenar
$numbers = '';
$letters = '';
$concatena = $valorTitulo . $valorCapitulo . $valorArtigo;
// Envolve cada linha em um parágrafo
$novalinhas = "<li><p>" . $novalinha . "</p></li>";
// Verifica se tem o texto Linha na linha
$procuraTitulo = strpos($novalinhas, $encontraTitulo);
$procuraCapitulo = strpos($novalinhas, $encontraCapitulo);
$procuraArtigo = strpos($novalinhas, $encontraArtigo);
// Verifica se tem o texto Linha na linha
if ($procuraTitulo === false) {
if ($procuraCapitulo === false) {
if ($procuraArtigo === false) {
// Se não encontrar nada
echo $novalinhas;
// Se não encontrar artigo
}
else {
// Captura o número do artigo na linha para atribuir na ID
$artigo = explode(" ", $novalinhas);
// Define as variações para serem excluídas e remove variações
$caracteres = array(
"º",
"."
);
$artigos = str_replace($caracteres, "", $artigo[1]);
// Atribui à valorArtigo a string "_artigo + nº"
$valorArtigo = '_artigo' . $artigos;
// Atribui à valorArtigo a value
$value = $valorArtigo;
// Separa a palavra do número
for ($i = 0; $i < strlen($value); $i++) {
if (is_numeric($value[$i])) $numbers.= $value[$i];
else $letters.= $value[$i];
}
// Verifica se é a palavra artigo
if ($letters == "artigo") {
// Mantém o valorArtigo
$valorArtigo = $valorArtigo;
// Mantém o valorArtigo
}
else {
// Verifica está definido
if (isset($valorArtigo)) {
// Mantém o valorArtigo
$valorArtigo = $valorArtigo;
}
else {
// Limpa o valorArtigo
$valorArtigo = "";
}
}
// Monta a ul com o id concatenado
echo "</ul>";
echo '<ul id="' . $concatena . '" class="artigo">';
echo $novalinhas;
}
// Se foi capturado a palavra subseção
}
else {
$contatenaCapitulo = 1;
// Captura o número romano da Subseção para atribuir na ID
$cap = explode(" ", $novalinhas);
$caracteres = array(
"CAPÍTULO"
);
$caps = $cap[1];
$valorCapitulo = '_capitulo' . $caps;
$value = $valorCapitulo;
for ($i = 0; $i < strlen($value); $i++) {
if (is_numeric($value[$i])) $numbers.= $value[$i];
else $letters.= $value[$i];
}
if ($letters == "capitulo") {
$valorArtigo = "";
}
else {
if (isset($valorCapitulo)) {
$valorCapitulo = $valorCapitulo;
}
else {
$valorCapitulo = "";
}
}
echo "</ul>";
echo '<ul id="' . $concatena . '" class="capitulo">';
echo $novalinhas;
}
}
else {
$contatenaTitulo = 1;
$tit = explode(" ", $novalinhas);
$caracteres = array(
"TÍTULO"
);
$tits = $tit[1];
$valorTitulo = '_titulo' . $tits;
$value = $valorTitulo;
for ($i = 0; $i < strlen($value); $i++) {
if (is_numeric($value[$i])) $numbers.= $value[$i];
else $letters.= $value[$i];
}
if ($letters == "titulo") {
$valorCapitulo = "";
$valorArtigo = "";
}
else {
if (isset($valorTitulo)) {
$valorTitulo = $valorTitulo;
}
else {
$valorTitulo = "";
}
}
echo "</ul>";
echo '<ul id="' . $concatena . '" class="titulo">';
echo $novalinhas;
}
}
?>
Which passage is not processed? Your code seems to work, although there are certain unnecessary things in it. In the future, if possible, put only the necessary code, and a minimum, complete and verifiable example, so it will increase the chances of more people understanding the problem and posting an answer that meets what you want. =)
– stderr
@qmechanik, it does the correct reading, only that a passage later, it was as if all the ids of the uls, jumped to ul below and the first id becomes empty. I tried to reduce the code to the maximum, kkk, but since I’m not very experienced yet, I may have lines that I wouldn’t have to put in, if you can tell me which ones were unnecessary, I appreciate
– Alê Moraes
Like that check:
if (isset($valorTitulo)){ $valorTitulo = $valorTitulo;}else {$valorTitulo = "";}
. The question has approximately 200 lines of code, which makes it much more difficult to understand which section is causing the problem. I tested your code here and it worked, what is the actual purpose of the code? Just add to each row of the variable$documento
the element<ul>
, or is there something else? what is the passage is skipped?– stderr
It is the first passage, hence the title id one goes to the article id 1 and the article id 1, goes to the article id 2, and so on, I wanted it to concatenate the article hierarchy, then the title1, gets the title id 1, the Article 1 id, would be with the id titulo1artigo1 and so on, I was able to make it concatenate right, but it seems that the code skips the first passage, or it captures the first passage and applies the id in the next passage
– Alê Moraes
See if that’s it http://pastebin.com/n03q6gdG.
– stderr
That’s it!!! But what did you change? Where were you wrong?
– Alê Moraes
I posted an answer, see if you can understand what it was. =)
– stderr