Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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?
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.
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)
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;
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 ;)
muito obrigado já comecei a pesquisar suas instruções valeu :)
Quando estiver pronto quero que vocês deem uma olhada e me digam o que acham.
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];
}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 :)
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;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>';
}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] . ' ';
}Ok agora eu só preciso pegar esse resultado e compará com os campos existentes no array;
para retornar o resultado.
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"//,
);
} echo $dicionario;
}
}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...
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;
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.
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/
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!
pessoal consegui fazer o que estava precisando e achei que deveria mostra a vocês.
if(isset($_POST['acao'])){
$teste = $_POST["nome"];
$antes = array(
"include_once", "<?php", "?>", "{", "}", "(", ")", "echo");
$depois = array(
"IncluirUmaVez", "ComecaCodigo",
"TermaCodigo", "AbreEnfase",
"FechaEnfase", "AbrePreferencia",
"FechaPreferencia", "Mostra");
$tstr = str_replace($antes, $depois, $teste);
echo $tstr.' ';
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.