Jump to content

Ramael

Members
  • Content count

    71
  • Joined

  • Last visited

Everything posted by Ramael

  1. Ramael

    Dois resultados em uma função

    Olá, boa tarde. Tenho um site em OpenCart e tenho um módulo para avisos, mas esse módulo só me exibe o nome do produto e preciso que ele me mostre também o código. Consegui fazer uma adaptação para que ele me mostrasse somente o código, aí fica OU código OU nome, mas seria interessante que mostrasse os dois. Analisando todos os arquivos achei a função responsável por trazer do banco de dados o nome do produto, agora gostaria de acrescentar nessa mesma função, que ela trouxesse de outra tabela, o código. Como faço isso? Essa é a função original que traz o nome do produto: public function getAviseme() { $query = $this->db->query("SELECT DISTINCT p.product_id, pd.name AS product_name, COUNT(a.email) AS emails, a.aviseme_id, a.option FROM " . DB_PREFIX . "aviseme a INNER JOIN " . DB_PREFIX . "product p ON p.product_id = a.product_id LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) WHERE a.status = '1' AND pd.language_id = '".(int)$this->config->get('config_language_id')."' GROUP BY p.product_id"); return $query->rows; } Essa é a modificação que fiz para exibir o código do produto: public function getAviseme() { $query = $this->db->query("SELECT DISTINCT p.product_id, pd.model AS product_model, COUNT(a.email) AS emails, a.aviseme_id, a.option FROM " . DB_PREFIX . "aviseme a INNER JOIN " . DB_PREFIX . "product p ON p.product_id = a.product_id LEFT JOIN " . DB_PREFIX . "product pd ON (p.product_id = pd.product_id) WHERE a.status = '1' GROUP BY p.product_id"); return $query->rows; } Agora quero juntar as duas coisas, pra que eu possa mostrar os dois valores. Aí no arquivo PHP eu colocaria mais um valor no Array e no TPL mais uma variável. Separado funciona. Desculpem a ignorância, acredito que não deva ser algo tão complicado, mas é que não conheço isso. Pra mim tudo é grego. Grato.
  2. Ramael

    Procurar palavra em site

    Obrigado mais uma vez pessoal. Evandro, era isso mesmo. Colocando o inicio e o fim, funcionou direito. Mas achei estranho não ter funcionado do outro jeito. Li todo aquele guia de regex do Aurélio e não entendi porque não estava rolando. William, o array_map não faz a mesma coisa que o array_filter?! Pelo que li no manual do PHP, é a mesma coisa, eu não consegui perceber diferença. Há diferença? Valeu pessoal. Agora vou ver se consigo incrementar um pouco mais meu programinha.
  3. Ramael

    Procurar palavra em site

    De boas pessoal? Estou eu cá de volta com mais uma de minhas dúvidas, vamos lá. Estou, como título diz, tentando encontrar umas palavras dentro de um site, estou usando uma funçãozinha assim: <?php $url = file_get_contents('ENDEREÇO DE UM SITE'); $buscar = '@'; while(($numero_ocorrencias = strpos($url, $buscar, $numero_ocorrencias+1)) != 0) { echo $numero_ocorrencias.' '.'<br />'; } ?> Ele vai buscar todas as incidências do @ na tal página, mas ele só me mostra a posição. Eu queria que ele me mostrasse toda a palavra, no caso e-mail, que está junto com o arroba. Já tentei procurar isso no Google de diversas formas, mas só encontrei referências ao strpos. Alguém conhece algo a respeito, se não uma solução, pelo menos a forma correta de se procurar isso. Obrigado pessoal.
  4. Ramael

    Procurar palavra em site

    HÁ! Tenho que dizer que estou me sentindo o Daniel San aqui nesse post, maaaaas... "Consegui!!!" (entre aspas mesmo). Daquele primeiro array feito com o preg_match_all, consegui separar os resultados que quero com o array_filter e o preg_match naquela função callback e aí tome ER novamente!! Fui fazendo como o Evandro disse, testando os pontos do array_filter até "entender". Está ficando bacana, mas ainda estou me batendo com a ER pra não pegar e-mail. LOL Isso aqui não deveria pegar tudo que não tivesse arroba pelo meio?? $padrao = "/.*?[^@].*?/";
  5. Ramael

    Procurar palavra em site

    Obrigado pessoal!!! Isso está realmente sendo uma aula. Beraldo, a ER que você passou não rolou, mas o link é muito maneiro. Agora entendi o porquê daqueles resultados, entendi como os quantificadores gulosos funcionam. Esses guias da Novatec são muito bons, já vou comprar mais alguns. Evandro, você ajudou a dar uma aprimorada bacana na minha ER. É engraçado que agende aprende um tipo de coisa e tenta fazer somente daquele jeito e não mistura nada. Rsss. Olha como ficou a ER agora: $pattern = "/href=[\s\"\'](\s?.*?\s?)[\"\'\s]/i"; Agora além de pegar exatamente o que quero, os hrefs, não importa se o código na página está com algum erro no html o link é pego mesmo assim. Entendo e concordo com o que você e o William falaram, o ideal e correto é que o se faça somente uma leitura do código e depois se trate o resultado, mas o problema é que eu não conheço praticamente nada de PHP e fico meio tateando no escuro. Se eu conseguisse resolver tudo com ER, então eu não precisaria ficar atormentando tanto vocês. Rsss Não consegui usar o array_filter e o array_values, na documentação do PHP o texto me parece mais pro técnico do que pro iniciante e também não consegui encontrar muita coisa por aí. Teriam algum lugar mais pro nível iniciante onde consultar? Tentei o site do Aurelio que o Beraldo indicou, mas não achei nada sobre arrays. Entendam que não quero simplesmente pedir "façam um exemplo", quero minimamente entender o que estou fazendo pra poder usar isso em outras coisas mais pra frente. vlw pessoal.
  6. Ramael

    Procurar palavra em site

    Obrigado pela ajuda William. Mas o strpos não me retornaria somente a posição do resultado no array? Eu preciso do resultado em si. Pelo meu conhecimento limitadíssimo, estou optando por voltar as ER e eliminar os e-mail ali mesmo, pois pra pegar tudo e depois ter que filtrar... acho que é mais facil pegar uma coisa de cada vez com o preg_match_all mesmo. Vamos no que eu conheço que acho que vai complicar menos. LOL Estou tentando uma ER $result = "/.*[^@].*/"; ou então $result= "/href=\"(.*[^@].*)\"/"; Na minha cabeça isso pegaria tudo que não tem o @ no meio, mas, mais uma vez não está rolando. sugestões?
  7. Ramael

    Procurar palavra em site

    Salve pessoal. Obrigado pela aula Beraldo. Acho que o menos complicado é montar uma ER pra pegar tudo que estiver dentro do href ou dentro da tag <a>, e depois ir limpando os resultados com o str_replace. Fiz assim e deu certo. Agora estou me batendo pra separar os e-mails de outros links. Gostaria de filtrar os resultados com e sem o @, mas ainda não consegui. Tentei o array_filter e o array_values mas não rolou. Teriam alguma sugestão de como posso fazer isso.
  8. Ramael

    Procurar palavra em site

    Sim, isso eu tinha entendido. O que não estou/estava entendendo é por que ele não exibia a letra P, mas acho que agora saquei como o lance funciona. Ele não me mostra a letra P, porque a função entende que eu quero o que está entre o P... assim: $pattern = "/href=\"[^mailto:](.*)\"/"; Isso me mostra tudo que estiver ENTRE o href=" e uma letra que não está no [^...] e aquela aspa dupla lá do outro lado. É isso? :upset: rssss... mais uma vez, obrigado pela paciência e desculpe minha noobisse.
  9. Ramael

    Procurar palavra em site

    Desculpe, mas continuei sem entender, quer dizer, entendi que eu havia criado a lista negada e que como o Page começa com P e não está na lista ele me mostra seu resultado. Mas por que diabos a primeira letra é omitida nos resultados? E mesmo quando faço o contrário, crio uma lista procurando o "m", ele omite a primeira letra. Por que isso ocorre? Acho que a primeira letra deveria ser exibida. Obrigado pela paciência Beraldo.
  10. Ramael

    Procurar palavra em site

    Obrigado Beraldo, É... pelo que li por aí é exatamente isso que você falou. Mas por que o P?? Não tem P em "mailto:", como assim ele coincide? Não entendi. O ruim de não manjar das coisas é que soluções mais simples acabam passando batido. rsss Nem tinha pensado em tratar os resultados depois. Vlw. Quanto ao PS, é que eu coloquei um $key ali pra fazer uma contagem dos resultados, mas ele começa do zero e eu queria que começasse do 1, mas sem omitir o resultado zero. Não tem muita importância isso, é só pra aprender mesmo. Valeu!! Um dia eu aprendo.
  11. Ramael

    Procurar palavra em site

    Olá pessoal. Como disse antes, eu consegui e o código que fiz ficou assim: $url = file_get_contents('teste.html'); $pattern = "/mailto:(.*)\" /"; $subject = $url; // $matches = array(); $resultado = preg_match_all($pattern, $subject, $matches); foreach ($matches [1] as $key =>$value) { echo $key." - ".$value." <br>"; } Mas agora quero pegar os links dessa página, mas sem pegar os e-mails. Então fiz uma regra assim na minha ER: $pattern = "/href=\"[^mailto:](.*)\"/"; Que na minha cabeça significa, que será mostrado tudo que estiver entre o href=" e a outra ", menos o que contiver mailto: ele até pega exatamente isso, mas o problema é que a primeira letra de cada resultado está sendo omitida. :huh: Assim: 0 - age1.html 1 - age2.html 2 - age3.html 3 - age4.html 4 - age5.html Quando na verdade era pra ser Page. Não entendi o porquê disso estar acontecendo. Alguém? Obrigado pessoal. T+ Ramael ps.: Uma dúvida que não tem muita importância: Tem como a contagem começar do 1, mas sem omitir o resultado todo?
  12. Ramael

    Procurar palavra em site

    Obrigado Beraldo, você já me deu uma luz aqui. Acho que com mais algumas googladas, consigo fazer sozinho. Caso contrário, volto aqui pra pedir socorro. rsss
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.