Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

gedmilson

criar Dicionario com PHP

Recommended Posts

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.