daviziim 0 Denunciar post Postado Maio 11, 2010 galera tava desenvolvendo um script um complemento do file_get_contents pra fla verdde pra dxar as url tudo absolute... (nao posso usar a tag base =/ dai apelei pra ER) ai to aki makukando a nao consigo obter um resultado agradavel preciso pegar todos.. até de script.. os hrefs possiveis cheguei aki: $er = '/href=(\'|")(.*)(\'|")/i'; o problema é: minha er nao pega tag assim: href=img.jpg, ela só funciona se conter aspas duplas ou simples queria implmentar pra pega sem as aspas tbm, mas nao consigo tentei: $er = '/href=(\'|")?(.*)(\'|"|( )?)/i'; mas nao da certo =\ se puder ajudar vlww!! Compartilhar este post Link para o post Compartilhar em outros sites
Evandro Oliveira 331 Denunciar post Postado Maio 11, 2010 /href=(.*)\s/ Compartilhar este post Link para o post Compartilhar em outros sites
daviziim 0 Denunciar post Postado Maio 11, 2010 /href=(.*)\s/ evando vlw pela ajuda mas tem 1 problema.. por exemplo, se eu usar essa ER que voce me passo ela iria pegar os espacos dpois da tag tbm $str = "href='ahuahuuh' a ahuahu"; $er = '/href=(.*)\s/'; $str = preg_replace($er,"link",$str); echo $str;//printa-> linkahuahu algum jeito de concertar? vlww Compartilhar este post Link para o post Compartilhar em outros sites
Evandro Oliveira 331 Denunciar post Postado Maio 11, 2010 href's são referências externas, URI's que NÃO PODEM conter espaços. Compartilhar este post Link para o post Compartilhar em outros sites
daviziim 0 Denunciar post Postado Maio 11, 2010 href's são referências externas, URI's que NÃO PODEM conter espaços. sim mas tipo, nao digo que a url teria que ter espaço o problema é que ele tira o espaco doque nao é URL vlww man Compartilhar este post Link para o post Compartilhar em outros sites
Evandro Oliveira 331 Denunciar post Postado Maio 11, 2010 e o que você quer passar através de href além de URI's ? veja, o ÚNICO caractere que nos permite separar dois valores é o espaço <a href=google.com title=teste>testando</a> Exceto XHTML, o pedaço de código acima É VÁLIDO, porque? Pela existência do espaço, separando href de title Vou pensar em uma outra ER que solucione o seu problema a contento, mas tenha em mente que vai gerar resultados falhos. Compartilhar este post Link para o post Compartilhar em outros sites
daviziim 0 Denunciar post Postado Maio 11, 2010 sim, entendo exatamente oque voce quer dizer mas tipo to querendo dizer que se tiver um span assim: <span><a href=google.com title=teste>testando</a> ahu auh <span>span1</span></span> e se eu usar um replace com a ER que voce me passou, ela vai da replace nisso tudo: "href=google.com title=teste>testando</a> ahu auh " para só na outra tag.. o texto ' ahu auh ' tbm vai embora e tipo nao quero pegar soh url de <a> tag digo o mesmo pra script tbm no caso iria gostaria de pegar todos href e src vlw Compartilhar este post Link para o post Compartilhar em outros sites
Bruno Augusto 417 Denunciar post Postado Maio 11, 2010 Eu desconfio que o problema é que o Evandro, ou melhor, a ER dele foi gulosa. Para impedir essa gulodice adicione uma ? ao coringa (.*): $context = 'Texto <a href="http-~~-//www.google.com">Google</a> Texto Texto Texto <a href="http-~~-//www.yahoo.com">Yahoo</a> Texto Texto Texto <a href="http-~~-//www.uol.com.br">UOL</a> Texto Texto <img src="imagem.jpg" />'; preg_match_all('/(href|src)=[\'"](.*?)[\'"]/', $context, $matches ); print '<pre>'; print_r( $matches ); Saída: Array ( [0] => Array ( [0] => href="http://www.google.com"'>http://www.google.com" [1] => href="http://www.yahoo.com"'>http://www.yahoo.com" [2] => href="http://www.uol.com.br"'>http://www.uol.com.br" [3] => src="imagem.jpg" ) [1] => Array ( [0] => href [1] => href [2] => href [3] => src ) [2] => Array ( [0] => http://www.google.com [1] => http://www.yahoo.com [2] => http://www.uol.com.br [3] => imagem.jpg ) )Explicando... Removi o \s pois, sem a gulodice, ele é desnecessário pois vai encontrar o href e pegar tudo o que estiver entre as aspas simples ou duplas após seu respectivo sinal de igualdade. Assim, te poupa de passar um trim() quando percorrer a matriz $matches Perceba que também retirei o grupo que você usou para determinar o tipo de aspa que envolverá o atributo. Como apenas uma aspa é válida para abrir e para fechar, uma lista é melhor que um grupo. Se houver outra aspa do mesmo tipo pode quebrar a URL prematuramente, invalidando-a. E, agrupei o href com um src, assim te permite pegar endereços de imagem também. Compartilhar este post Link para o post Compartilhar em outros sites
daviziim 0 Denunciar post Postado Maio 12, 2010 Imaggens mt obrigado mesmo man mas dai eu volto ao problema do meu primeiro poste (claro com a er arrumada :)) olha, seria possivel de adptar a er pra pegar href/src sem aspas? exemplo: <a href=teste.html >link1</a> tentei modificar a ER acrescentando um " " espaço à lista mas nao deu certo =/ ficando: '/(href|src)=[\'" ](.*?)[\'" ]/' obrigado Compartilhar este post Link para o post Compartilhar em outros sites
daviziim 0 Denunciar post Postado Maio 12, 2010 galera obrigado pela ajuda com a ajuda de voces e quebrando a kbca aki, acho que consegui fazer o que queria:D só queria pedir um ultimo favor: tem como verificar se vai haver 'bug'/(pegar coisas indesejaveis) na minha ER? /(href|src)=[\'"]?(.*?)[\'"[:space:]]/ e pra quem quiser testar... <?php $context = 'Texto <a href="http://www.google.com">Google</a> Texto Texto Texto <a href="http://www.yahoo.com">Yahoo</a> Texto Texto Texto <a href="http://www.uol.com.br">UOL</a> Texto Texto<img src="imagem.jpg" />agora uma nova img... <img src=ahuahu.gif />'; preg_match_all('/(href|src)=[\'"]?(.*?)[\'"[:space:]]/', $context, $matches ); print '<pre>'; print_r( $matches ); print('</pre>'); ?> vlww Compartilhar este post Link para o post Compartilhar em outros sites
Bruno Augusto 417 Denunciar post Postado Maio 12, 2010 Olha, que você optou por casar tendo ou não a aspa, simples ou dupla na abertura, seria o caso de considerá-la no fechamento também. No mais, eu apenas trocaria a classe POSIX peloseu barra-letra, fica mais legível enão confunde com as listas: preg_match_all('/(href|src)=[\'"]?(.*?)[\'"]?\s+/', $context, $matches ); E, como pôde perceber, à esse barra-letra foi adicionado um metacaractere + para pegar nenhum, um ou mais de um espaços. Nunca se sabe o que se passa pela cabeça de quem gerou o HTML... Compartilhar este post Link para o post Compartilhar em outros sites