gedmilson 5 Denunciar post Postado Abril 19, 2016 Estou precisando criar um interpretador de código para me auxiliar. Mas estou encontrando dificuldades em passar o resultado dos vetores para a caixa de texto. tem como alguém de dar uma dica de como isso é possível? Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Abril 19, 2016 Que código quer interpretar? Que vetores são esses? E o que essa caixa de texto precisa exibir? Explique melhor sobre sua dúvida. "Interpretador de código" é algo muito amplo, podendo ser até equivalente a um compilador de linguagem. Seja mais específico. Compartilhar este post Link para o post Compartilhar em outros sites
gedmilson 5 Denunciar post Postado Abril 19, 2016 o que eu quero é um dicionario feito com array. O que não estou conseguindo é pegar as informações do campo de texto para pesquisar em um array. ex: gato, copo / farol pegar isso do campo de texto e colocar no array("gato" => [felino], "'" =>[virgula], "copo" =>[para tomar água]); echo "felino, virgula, para tomar água". se eu conseguir fazer isso o que eu quero fazer? exemplo: if(isset($_POST) && $_POST == $varial){ } tradução: se ABRE ENFASE existir ABRE ENFASE $_POST FECHA ENFASE e $_POST for igual a variável FECHA ENFASE Inicia procedimento termina procedimento o que estou tentando fazer é interpretar o código de forma dinâmica. Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Abril 19, 2016 primeiro você tem que definir o separador de cada palavra. Eu sugeriria o espaço. Porém, se usar espaço, "gato," será uma palavra inteira em vez de gerar "gato" e ",". Tendo definido o separador, use explode(), str_split ou preg_split para separar as palavras Para verificar se cada palavra consta no array de dicionário, pode usar in_array, array_key_exists Não entendi a parte do ABRE ENFASE / FECHA ENFASE e também o if que compara $_POST com uma variável não faz sentido. Só vai retornar true se você adivinhar o que o usuário digitou (que será o conteúdo de $_POST) Compartilhar este post Link para o post Compartilhar em outros sites
gedmilson 5 Denunciar post Postado Abril 19, 2016 Isso é uma interpretação bem mal feita de um código que eu fiz só para que você intendesse o que eu estava tentando fazer. mas de qualquer forma agradeço demais sua ajuda você não faz ideia do quanto está me ajudando; Compartilhar este post Link para o post Compartilhar em outros sites
Matheus Tavares 167 Denunciar post Postado Abril 19, 2016 Eu, particularmente, jamais faria algo assim sem utilizar orientação a objetos. Não sei se você trabalha com OOP, mas não deixe de dar uma olhada aqui, pois é um bom ponto de partida para o que você quer fazer (de forma organizada e bem estruturada): http://forum.imasters.com.br/topic/446013-classes-para-condicoes/#entry1763132 Como você quer utilizar expressões como IF, while, etc, você tem basicamente 3 opções: 1 - Varrer sua string/código e procurar pelas instruções que casam com as que você definiu. Exemplo: "SE" => "if" - Instanciar as respectivas classes do Interpreter e executar no final, ou - Fazer as devidas substituições e executar eval() no código resultante, ou - Manipular o buffer. No manual tem um exemplo interessante. Escolha uma alternativa, faça sua tentativa, e poste quando tiver dificuldades. Abraços e boa sorte ;) Compartilhar este post Link para o post Compartilhar em outros sites
gedmilson 5 Denunciar post Postado Abril 19, 2016 muito obrigado já comecei a pesquisar suas instruções valeu :) Compartilhar este post Link para o post Compartilhar em outros sites
gedmilson 5 Denunciar post Postado Abril 19, 2016 Quando estiver pronto quero que vocês deem uma olhada e me digam o que acham. Compartilhar este post Link para o post Compartilhar em outros sites
gedmilson 5 Denunciar post Postado Abril 19, 2016 eu consegui fazer desse jeito só que agora quero deixar o espaço em branco <?php if($_POST){ $pizza = $_POST['nome']; //$pizza = "piece1 piece2 piece3 piece4 piece5 piece6"; $pieces = explode(" ", $pizza); echo $pieces[0]; // piece1 echo $pieces[1]; // piece2 echo $pieces[2]; echo $pieces[3]; } Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Abril 19, 2016 Use isset() no if do $_POST. E de preferência teste por um índice: if (isset($_POST['nome'])) Quanto ao espaço, não entendi onde você quer deixar os espaços. Entre cada nome? Outra sugestão é fazer um loop para dar echo nos elementos do array $pieces. Assim não importa se há 1, 2 ou 200 pedaços de pizza. O script exibirá todos :) Compartilhar este post Link para o post Compartilhar em outros sites
gedmilson 5 Denunciar post Postado Abril 19, 2016 Eu consegui resolver esse problema dos espaços o que eu estava querendo fazer era uma simulação de palavras num texto. Ficou assim. if($_POST){ $pizza = $_POST['nome']; //$pizza = "piece1 piece2 piece3 piece4 piece5 piece6"; $pieces = explode(" ", $pizza); echo $pieces[0].' '; // piece1 echo $pieces[1].' '; // piece2 echo $pieces[2].' '; echo $pieces[3].' '; agora vou fazer como você me disse e testa com a função while; Compartilhar este post Link para o post Compartilhar em outros sites
gedmilson 5 Denunciar post Postado Abril 19, 2016 Tentei fazer dessa maneira e terminei criando um lup infinito. if(isset($_POST['nome'])){ // $pizza = $_POST['nome']; //$pizza = "piece1 piece2 piece3 piece4 piece5 piece6"; while($pieces = explode(" ", $pizza)){ $piece++; echo $piece.'<br>'; } Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Abril 19, 2016 O explode() é executado só uma vez. O que vai no loop é a exibição dos "pedaços" $pieces = explode(" ", $pizza); for ($i = 0, $total = count($pieces); $i < $total; $i++) { echo $pieces[$i] . ' '; } Compartilhar este post Link para o post Compartilhar em outros sites
gedmilson 5 Denunciar post Postado Abril 19, 2016 Ok agora eu só preciso pegar esse resultado e compará com os campos existentes no array; para retornar o resultado. Compartilhar este post Link para o post Compartilhar em outros sites
gedmilson 5 Denunciar post Postado Abril 19, 2016 Tentei fazer dessa forma para ver se encontrava o significado da palavra. Mas não deu certo. if(isset($_POST['nome'])){ $pizza = $_POST['nome']; //$pizza = "piece1 piece2 piece3 piece4 piece5 piece6"; $pieces = explode(" ", $pizza); for ($i = 0, $total = count($pieces); $i < $total; $i++) { echo $pieces[$i] . ' '; $dicionario = array( "teste1" => "palavra1"//, ); } if(isset($pieces) && $epieces == $dicionario){ echo $dicionario; } } Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Abril 19, 2016 Primeiramente, Habilite todas as exibições de erro, como mostrado neste tópico, na Orientação No. 3. Isso vai mostrar que há uma variável errada: $epieces nunca foi definida Definir $dicionario dentro do loop dessa forma não tem lógica. É um array fixo, que está sendo definido diversas vezes da mesma forma Confesso que ainda não entendi direito seu objetivo... Compartilhar este post Link para o post Compartilhar em outros sites
gedmilson 5 Denunciar post Postado Abril 19, 2016 O meu objetivo é criar um dicionario com array. confesso que me excedi quando falei em criar um interpretador é que passei tanto tempo pesquisando e tentando fazer isso que fiquei meio confuso. Não consegui encontrar tutoriais explicando como criar um dicionario com php. por isso tentei a palavra interpretador de código; Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Abril 20, 2016 Quando me dizem "dicionário", penso no seguinte: uma lista de palavras e suas definições. Para pesquisar, busca-se uma palavra e exibe-se sua definição. Algo assim: <?php $dictionary = [ 'brasil' => 'País da América do Sul', 'italia' => 'País da Europa', 'chine' => 'País da Ásia', ]; $search = 'brasil'; // supondo que isto vem do formulário if (array_key_exists($search, $dictionary)) { echo $dictionary[$search] . PHP_EOL; } O que eu não entendi é esse "dicionário" que você quer criar. Você compara o array de palavras digitadas com o array de dicionário. Isso só dará certo se o usuário digitar o dicionário completo. Talvez nós estejamos falando de coisas diferentes. Por isso digo que não entendi seu objetivo ainda. Compartilhar este post Link para o post Compartilhar em outros sites
Gabriel Heming 766 Denunciar post Postado Abril 20, 2016 Sua questão ainda está muito confusa, pois em alguns momentos fala de uma forma e, em outros, de outra. Se quiser criar um dicionário com questões de busca de forma "aprimorada", sugiro procurar uma tecnologia além do PHP, como por exemplo o FTS (Full Text Search), encontrado em diversos SGBDs. MySQL é bem precário nesse quesito, tem que ser um SGBD mais robusto, como PostgreSQL, Oracle, SQL Server, etc... Utilizei no meu TCC sobre PostgreSQL para uma base de conhecimento. http://rachbelaid.com/postgres-full-text-search-is-good-enough/ Compartilhar este post Link para o post Compartilhar em outros sites
gedmilson 5 Denunciar post Postado Abril 20, 2016 Era exatamente isso que estava precisando. peço desculpas por ter tomado tanto o seu tempo. Agora posso dar inicio ao dicionario de PHP valeu! Compartilhar este post Link para o post Compartilhar em outros sites