The Boss Posted November 24, 2007 at 12:39 AM Report Share #149856 Posted November 24, 2007 at 12:39 AM Boa noite, eu estou e criar um fórum por mim próprio para aprofundar os conhecimentos básicos de php que tenho e agora estou a criar o ficheiro para criar posts/tópicos já fiz várias validações ao input do utilizador: *passar todo o unicode e símbolos a htmlentities *tirar /n /t /r e por <br /> *e transformar as bbtags em html MAS eu não gosto nada de ver um site com código html deste tipo: <B><U>asdf</B></U> o que quero fazer é que ordene as bbtags de maneira a respeitar o xhtml para aparecer assim: <B><U>asdf</U></B> então, pensei em resolver este problema assim: 1-separar as bbtags to post 2-e deixar o post num arry e as bbtags noutro array 3-inventava um truque para ordenar array das bbtags para ficar xhtml correcto 3.1- se possível fazer um log com as alterações 4-e depois substituía o bbcode por xhtml 5-e juntava a array do post mais a do xhtml até agora só fiz o ponto um, e fiz metade do ponto dois, e só de pensar no ponto 3, fico todo atrofiado ? ? e depois fico a pensar, se eu for usar isto num fórum muito activo, (ex.: com 500 utilizadores simultâneos), este código deve comer cpu que sa farta queria que alguém me desse dicas de como acabar o ponto 2 e 3, e sugestões/ideias para uma maneira de ordenar as bbtags para xhtml aqui vai o que fiz até agora, sobre este assunto <?php //por as bbtags so com o inicio e o fim de cada tag, tirar o ']' // $post=" Você é [b]de que país? hh [/b]gfhfg [b]hh[/b]"; $postsize = strlen($post); $bbtag = array ( 1 => array(1=> "[color=" ,2=> "]"), 2 => array(1=> "[b" ,2=> "]"), 3 => array(1=> "[/color" ,2=> "]"), 4 => array(1=> "[/b" ,2=> "]") ); //organizar este array, nao precisa do "]" $tot=0; //dividir tags e texto for ($h=1; $h <= 4;$h++) { for ($i=0;$i<=$postsize;$i++)//ver se tem varias vezes a mesma tag { if (is_int(stripos($post,$bbtag[$h][1],$i))) { $result[$tot][1] = stripos($post,$bbtag[$h][1],$i); $result[$tot][2] = stripos($post,']',$result[$tot][1]); $i=$result[$tot][2]; $tot++; } } } sort($result); $num_tags=count($result); for ($h=0; $h <= ($num_tags-1);$h++) { $tags[$h] = substr($post,$result[$h][1],$result[$h][2]-$result[$h][1]+1); } echo "<pre>"; echo var_dump($result); echo "</pre>"; echo "<pre>"; echo var_dump($tags); echo "</pre>"; ?> esperimentem este código desculpem se tenho má pratica de programação, só aprendi php a partir do phpmanual e do w3school e do que aprendi na escola Link to comment Share on other sites More sharing options...
The Boss Posted November 25, 2007 at 02:23 AM Author Report Share #150137 Posted November 25, 2007 at 02:23 AM se não souberem/conseguírem ajudar, podiam indicar algum sitio aonde me poderiam ajudar? Link to comment Share on other sites More sharing options...
djthyrax Posted November 25, 2007 at 03:05 AM Report Share #150142 Posted November 25, 2007 at 03:05 AM eu não gosto nada de ver um site com código html deste tipo:<B><U>asdf<U><B> o que quero fazer é que ordene as bbtags de maneira a respeitar o xhtml para aparecer assim: <B><U>asdf<B><U> O teu exemplo que supostamente respeita as regras, não as respeita. Isto sem contar que estás só a abrir tags e nunca as fechas. Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum! Link to comment Share on other sites More sharing options...
The Boss Posted November 25, 2007 at 03:10 AM Author Report Share #150146 Posted November 25, 2007 at 03:10 AM eu não gosto nada de ver um site com código html deste tipo:<B><U>asdf<U><B> o que quero fazer é que ordene as bbtags de maneira a respeitar o xhtml para aparecer assim: <B><U>asdf<B><U> O teu exemplo que supostamente respeita as regras, não as respeita. Isto sem contar que estás só a abrir tags e nunca as fechas. oi, desculpa ai, esqueci me do '/'do lado direito mas o objectivo é por as tags como deve ser vou editar o post inicial, para que mais ninguém se confunda Link to comment Share on other sites More sharing options...
djthyrax Posted November 25, 2007 at 03:15 AM Report Share #150147 Posted November 25, 2007 at 03:15 AM eu não gosto nada de ver um site com código html deste tipo:<B><U>asdf<U><B> o que quero fazer é que ordene as bbtags de maneira a respeitar o xhtml para aparecer assim: <B><U>asdf<B><U> O teu exemplo que supostamente respeita as regras, não as respeita. Isto sem contar que estás só a abrir tags e nunca as fechas. oi, desculpa ai, esqueci me do '/'do lado direito mas o objectivo é por as tags como deve ser vou editar o post inicial, para que mais ninguém se confunda Continua errado. Estás a fechar o <b> sem fechares o <u> que abriste lá dentro. Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum! Link to comment Share on other sites More sharing options...
The Boss Posted November 25, 2007 at 03:25 AM Author Report Share #150149 Posted November 25, 2007 at 03:25 AM eu não gosto nada de ver um site com código html deste tipo: <B><U>asdf</B></U> o que quero fazer é que ordene as bbtags de maneira a respeitar o xhtml para aparecer assim: <B><U>asdf</U></B> eu editei o post inicial, e o objectivo do script é isso mesmo, caso o utilizador fecha o <B> antes do <U>, o script tem que corrigir isso é o que quero que o script faça Link to comment Share on other sites More sharing options...
djthyrax Posted November 25, 2007 at 03:34 AM Report Share #150151 Posted November 25, 2007 at 03:34 AM Ah, agora já percebi! O que eu faria era percorrer a "árvore" e ir adicionando a um array as tags que estão abertas. Quando encontrasse um fecho de uma tag, apagava a entrada na array. Se não tivesse presente naquele "ramo", ia procurar no seu "ramo-mãe" e por aí fora até encontrar a tag. Quando acabasse de percorrer o conteúdo da tag, fechava as tags que tinha referenciado no array. Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum! Link to comment Share on other sites More sharing options...
The Boss Posted November 25, 2007 at 03:37 AM Author Report Share #150152 Posted November 25, 2007 at 03:37 AM Ah, agora já percebi! O que eu faria era percorrer a "árvore" e ir adicionando a um array as tags que estão abertas. Quando encontrasse um fecho de uma tag, apagava a entrada na array. Se não tivesse presente naquele "ramo", ia procurar no seu "ramo-mãe" e por aí fora até encontrar a tag. Quando acabasse de percorrer o conteúdo da tag, fechava as tags que tinha referenciado no array. entendi a tua ideia e vou fazer amanha um diagrama disso e postar aqui Link to comment Share on other sites More sharing options...
The Boss Posted December 4, 2007 at 08:53 PM Author Report Share #152331 Posted December 4, 2007 at 08:53 PM peço desculpa por não ter postado o diagrama ainda, mas como agora ando em estagio, fiquei quase sem tempo livre Já tenho um pedaço de código que resolve este problema, mas ainda tem bugs. Link to comment Share on other sites More sharing options...
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