Daniel Antonio de Lima 0 Posted July 17, 2019 Report Share Posted July 17, 2019 Estou desenvolvendo uma aplicação web, não sou muito experiente. Tenho uma classe chamada Page(page.class.php) que "monta" a pagina pra mim, e uma das funções dessa classe, é censurar determinado conteúdo por nível de usuário. <?php class Page(){ //(...) static function sensurar($str){ $tipoInt = User::tipoInt(); for ($i=0; $i < 11; $i++) { if ($tipoInt == $i) continue; $str = Page::clearTag2($str,"<!--a$i-->","<!--$i-->","<!--a-->"); } return $str; } static function clearTag2($str,$tA,$tB,$msg=""){ $str0 = $str; $pattern = "/({$tA})(.|\n)*({$tB})/"; $str = preg_replace($pattern,$msg,$str); if (is_null($str)) {echo "erro"; return $str0; }; if($str == "") { $len = strlen($str0); $error = preg_last_error(); Page::error(" Limpou a string. [tA] = '$tA', [tB] = '$tB',[pattern] = '$pattern', [str].length = {$len} $error $str0 ","Page::clearTag2"); } return $str; } E estava funcionando maravilhosamente bem, até que começou a apresentar erro. quando utilizo na pagina pagina("string") abaixo <pre><h2>Erro Page::clearTag2</h2> Limpou a string. [tA] = '<!--a5-->', [tB] = '<!--5-->',[pattern] = '/(<!--a5-->)(.| )*(<!--5-->)/', [str].length = 6086 6 <!doctype html> <html> <head> <meta charset="utf-8"> <title>Sistema H |Produto, Odin</title> <link rel="stylesheet" type="text/css" href="tema.d/oficial.d/css/page.css"> <link rel="stylesheet" type="text/css" href="tema.d/oficial.d/css/menu.css"> <script type="text/javascript"> server = "http://localhost/g2%20soft/ecomerce/"; </script> <script src="tema.d/oficial.d/js/wrequest.js"></script> </head> <body lang="pt-br"> <nav id="menunav"> <header> <img src="tema.d/oficial.d/img/logo com fundo transparente.png" alt=""> </header> <ul class="menu"> <li class="menufechado" link="perfil" submenu="true" > <span onclick="menuOpen(this)">+ FabricaA[Fabrica]</span> <ul class="submenu"> <li class="menufechado" link="edit_perfil" submenu="false" > <span onclick="menuOpen(this)">Perfil</span> </li> <li class="menufechado" link="edit_perfil?a=sair" submenu="false" > <span onclick="menuOpen(this)">Sair</span> </li> </ul> </li> <li class="menufechado" link="list_meusprodutos" submenu="true" > <span onclick="menuOpen(this)">+ Produtos</span> <ul class="submenu"> <li class="menufechado" link="list_meusprodutos" submenu="false" > <span onclick="menuOpen(this)">Meus Produtos</span> </li> <li class="menufechado" link="add_produto" submenu="false" > <span onclick="menuOpen(this)">Cadastrar Produto</span> </li> <li class="menufechado" link="list_valortipo" submenu="false" > <span onclick="menuOpen(this)">Tabelas de Preço</span> </li> </ul> </li> <li class="menufechado" link="list_meusclientes" submenu="true" > <span onclick="menuOpen(this)">+ Clientes</span> <ul class="submenu"> <li class="menufechado" link="list_meusclientes" submenu="false" > <span onclick="menuOpen(this)">Meus Clientes</span> </li> <li class="menufechado" link="list_naoclientes" submenu="false" > <span onclick="menuOpen(this)">Não Clientes</span> </li> </ul> </li> <li class="menufechado" link="#" submenu="true" > <span onclick="menuOpen(this)">+ Cadastro</span> <ul class="submenu"> <li class="menufechado" link="add_produto" submenu="false" > <span onclick="menuOpen(this)">Produto</span> </li> <li class="menufechado" link="add_formadepagamento" submenu="false" > <span onclick="menuOpen(this)">Forma de pagamento</span> </li> <li class="menufechado" link="add_prasodeentrega" submenu="false" > <span onclick="menuOpen(this)">Praso de pagamento</span> </li> </ul> </li> <li class="menufechado" link="list_pedidosfabrica" submenu="false" > <span onclick="menuOpen(this)">Pedidos</span> </li> <li class="menufechado" link="mensagens" submenu="false" > <span onclick="menuOpen(this)">Mensagens</span> </li> <li class="menufechado" link="" submenu="true" > <span onclick="menuOpen(this)">+ Relatorios</span> <ul class="submenu"> <li class="menufechado" link="rela_produtosvendidos" submenu="false" > <span onclick="menuOpen(this)">Produtos Vendidos</span> </li> <li class="menufechado" link="rela_produtoscadastrados" submenu="false" > <span onclick="menuOpen(this)">Produtos Cadastrados</span> </li> <li class="menufechado" link="rela_clientescadastrados" submenu="false" > <span onclick="menuOpen(this)">Clientes Cadastrados</span> </li> </ul> </li> <li class="menufechado" link="" submenu="false" > <span onclick="menuOpen(this)">Lançamentos</span> </li> </ul> </nav> <content> <h1>Produto, Odin</h1> <link rel="stylesheet" href="tema.d/oficial.d/css/view_produto.css"> <div class="page_listabas"> <!--a5--> <div class="page_abalabel " onclick="link('list_loja')">Loja</div> <!--5--> <div class="page_abalabel page_abalabel_opened">Ver</div> <!--a6--> <div class="page_abalabel" onclick="link('edit_produto?id=52')">Detalhes</div> <div class="page_abalabel" onclick="link('edit_produtomidia?id=52')">Midias</div> <!--6--> </div> <div class="page_aba"> <div id="referencia">Odin</div> <div class="midias"> <div class="midia_view"> <img src="anexo\97" alt="midia0" id="midia_view_img"> </div> <div class="midias_left"> <span> <img src="tema.d/oficial.d/img/midiasview_arrow_left.svg" alt=""> </span> </div> <div class="midias_right"> <span> <img src="tema.d/oficial.d/img/midiasview_arrow_right.svg" alt=""> </span> </div> <div class="midia_list"><div class=""> <img src="anexo/97" alt="" onclick="setMidia(this)"> </div> <div class=""> <img src="anexo/98" alt="" onclick="setMidia(this)"> </div> </div> </div> <div class="detalhes"> <p>Odim, tambem conhecido como pai de todos.</p> <p> 2cx por <valor>R$ 0,00</valor> </p> <p>[52]Hidralica Industrial/Eletrica</p> </div> <div class="formasdepagamento"> <p>Podendo ser pago:</p> {{formas de pagamento}} </div> <div class="outrosprodutos"> <div class="produto"> <img src="anexo/0" alt=""> </div> {{outrosprodutos}} </div> </div> <script type="text/javascript" src="tema.d/oficial.d/js/view_produto.js"></script> <footer>G2</footer> </content> <div class="menu-button" onclick="menuShow()">≡</div> <div class="flutuante" id="flutuante">Loading...</div> <div class="msgbox_fundo" id="msgbox_fundo" onclick="MSGbox.close()"> <div class="msgbox_box"> <span class="button msgbox_close" onclick="MSGbox.close()">X</span> <div class="msgbox_conteudo" id="msgbox_conteudo"> </div> </div> </div> <script type="text/javascript" src="tema.d/oficial.d/js/page.js"></script> <script type="text/javascript" src="tema.d/oficial.d/js/menu.js"></script> </body> </html> https://limaforge.000webhostapp.com/ Link to post Share on other sites
Daniel Antonio de Lima 0 Posted July 18, 2019 Author Report Share Posted July 18, 2019 Estava fazendo uns testes, e percebi que o erro sempre acontecia depois de 6000 caracteres. Dividi a String e testei... bom... funcionou. Segue o código: static function clearTag($str,$tA,$tB,$msg=""){ $pattern = "/({$tA})(.|\n)*({$tB})/"; $str1 = ""; $str0 = $str; $str = ""; while ($str0 != "") { if (strlen($str0)>6000) { $str1 .= substr($str0,0,6000); $str .= preg_replace($pattern,$msg,$str1); //------- if(preg_last_error() != 0) { $len = strlen($str0); $error = preg_last_error(); Page::error(" Limpou a string. [tA] = '$tA', [tB] = '$tB',[pattern] = '$pattern', [str].length = {$len} $error $str0 ","Page::clearTag2"); } //------- $str0 = substr($str0,6000); }else { $str .= preg_replace($pattern,$msg,$str0); //---------- if(preg_last_error() != 0) { $len = strlen($str0); $error = preg_last_error(); Page::error(" Limpou a string. [tA] = '$tA', [tB] = '$tB',[pattern] = '$pattern', [str].length = {$len} $error $str0 ","Page::clearTag2"); } //------ $str0 = ""; } //------------ Erro ---------- } return $str; } O problema é apenas que se a "censura" estiver na altura do caractere "6000", não vai tirar o conteúdo. https://limaforge.000webhostapp.com/ Link to post Share on other sites
Daniel Antonio de Lima 0 Posted July 18, 2019 Author Report Share Posted July 18, 2019 https://pt.stackoverflow.com/questions/397807/remover-trecho-do-html-entre-comentários-específicos/398067#398067 Tem a explicação do erro e alternativas. https://limaforge.000webhostapp.com/ Link to post Share on other sites
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now