OpenSys 0 Denunciar post Postado Março 18, 2009 Boas comunidade, Tou a elaborar um programa em C (em linux) e preciso de fazer uma regexp para pesquisar e retirar blocos de texto de um grande string. A função "preg_match" em PHP para para C e o que procuro. A grande string é uma página em HTML. ex: quero obter o texto "myurl" entre: <a>myurl</a> numa string obtida pelo CURL através de um chunk memory. agradeço comentários de uma maneira melhor para o fazer e blocos de código como exemplo. Obrigada. Compartilhar este post Link para o post Compartilhar em outros sites
VictorCacciari 42 Denunciar post Postado Março 18, 2009 Ok, deixa eu ver se entendi. você terá uma pg HTML, e quer pegar os links? para isso eu faria um html parser, o que não é la muito complicado, afinal, não precisará mostrar nada na tela como um browser faz. você pode fazer um método que pega o conteúdo de certos tags, uma vez eu tava com o projeto de um webSpider em mãos, não foi muito pra frente pois meus amigos deram pra trás, mas a idéia era parecida. Nós pegavamos as tags: <a href="">, <img src=""> e <script src=""> extraiamos as propriedades href e src. Assim faziamos um mapa do servidor. em C++, a classe string possui um método find, que é MUITO útil para isso (seria resolvido em poucas linhas). Como estamos em C, teremos que implementar um método que buscará a sua substring. Existem alguns algoritmos prontos que fazem isso de forma eficiente! Temos as funções strstr e strchr em mãos, que serão de grande ajuda! http://irc.essex.ac.uk/www.iota-six.co.uk/...chr_strrchr.asp ex da página HTML: <html> <head> <title>teste</title> <script type="text/javascript" src="../arquivo.js" ></script> </head> <body> <h1> Seu título </h1> <a href="http://www.google.com">Google!</a> </body> </html>vamos encontrar a posição da sub-string: ' <a href=" ' e guardála em uma variável inicio. a partir do ponto $inicio, vamos buscar as aspas duplas ' " ' que fecham a declaração do link, e guardar a posição numa variável fim. node que a sua substring será pagHTML[inicio:fim] Espero que tenho ajudado! Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Março 19, 2009 Vocẽ está no Linux. Existe header que utiliza expressões regulares (veja http://forum.imasters.com.br/index.php...amp;hl=regex.h) e até um modo de procurar isso SEM usar o header regex.h, utilizando um pipe p/ comunicação do resultado (veja http://forum.imasters.com.br/index.php...8&hl=popen). Ainda existe a possibilidade de nem ter que ler o arquivo linha por linha, mapeando em memória. Compartilhar este post Link para o post Compartilhar em outros sites
OpenSys 0 Denunciar post Postado Março 19, 2009 obrigada pela colaboração, ja ficou resolvido por agora com a strstr() e a strtok(); Compartilhar este post Link para o post Compartilhar em outros sites