Lailton 0 Denunciar post Postado Março 13, 2009 Olá galera so novo aqui e to precisando de um aajuda urgente, preciso pegar todos os valores das SRC de uma string, segue abaixo o que to fazendo porem me da esse erro: Warning: preg_match_all() [function.preg-match-all]: Delimiter must not be alphanumeric or backslash in D:\hospedagem\www\nl\index.php on line 10 4X esse mesmo erro. Segue abaixo meu codigo. <?php $texto[]='dasdahdkashda<img src="teste/asdasd/asdasdas/img.jpg">dlasjdk jdklajdlk ajdljlkasjdlsad'; $texto[]='dasdahdkashda<img src="teste/asdasd/asdasdas/img.jpg">dlasjdk jdklajdlk ajdljlkasjdlsad'; $texto[]='dasdahdkashda<img src="teste/asdasd/asdasdas/img.jpg">dlasjdk jdklajdlk ajdljlkasjdlsad'; $texto[]='dasdahdkashda<img src="teste/asdasd/asdasdas/img.jpg">dlasjdk jdklajdlk ajdljlkasjdlsad'; $er='src=\"(.*)\"'; foreach($texto as $x => $y){ if (preg_match_all($er, $y, $result)){ print_r($result); } } ?> http://forum.imasters.com.br/public/style_emoticons/default/upset.gif Sera que alguem poderia me ajudar ? vlw Compartilhar este post Link para o post Compartilhar em outros sites
Paulo André 0 Denunciar post Postado Março 13, 2009 Sua ER, para que você possa pegar os valores em SRC deve ficar assim: $er = '/src="(.*)"/i'; Tente. []'s ;) Compartilhar este post Link para o post Compartilhar em outros sites
Lailton 0 Denunciar post Postado Março 13, 2009 Sua ER, para que você possa pegar os valores em SRC deve ficar assim: $er = '/src="(.*)"/i'; Tente. []'s ;) obrigado deu certo... se fose assim $string="<img>imagem/asd/asd/asd/asdas/tal.jpg</img>"; como se faria ? $er='<{3}>(.*)</>'; tentei com isso mais tambem nao consigo Compartilhar este post Link para o post Compartilhar em outros sites
Paulo André 0 Denunciar post Postado Março 13, 2009 $er = '/<img>(.*)<\/img>/i'; Para a função preg_match_all(), a expressão regular sempre deve conter os delimitadores. Caso interesse, um ótimo guia prático sobre expressões regulares é este do Aurélio. []'s ;) Compartilhar este post Link para o post Compartilhar em outros sites
Lailton 0 Denunciar post Postado Março 13, 2009 Sua ER, para que você possa pegar os valores em SRC deve ficar assim: $er = '/src="(.*)"/i'; Tente. []'s ;) Paulo você tem um msn que eu possa falar diretamente com você ainda permanece o erro, pago para você me ajudar meu msn é lailton.webmaster@hotmail.com se poder me adiconar. grato. Lailton Compartilhar este post Link para o post Compartilhar em outros sites
Lailton 0 Denunciar post Postado Março 13, 2009 $er = '/<img>(.*)<\/img>/i'; Para a função preg_match_all(), a expressão regular sempre deve conter os delimitadores. Caso interesse, um ótimo guia prático sobre expressões regulares é este do Aurélio. []'s ;) Eu comprei o livro dele expressoes regulares 2 edicao mais ainda to com duficuldade, li 2 vezes mais algumas coisas ainda nao caiu rsrs veja se consegue ajudar <? $codigo="UPB50"; // codigo do produto $url = "http://www.apc.com/resource/include/techspec_index.cfm?base_sku=".$codigo."&isocountrycode=BR"; $lines = file ($url); $er='/<img src="(.*)">/i'; foreach ($lines as $line_num => $line) { if (preg_match_all($er, $line, $result)) { print_r($result); echo "<br>"; } } ?> o que eu quero com tudo isso é pegar isso aqui abaixo de preferencia somente apartir do src=" ( isso ) " <- ate aqui <img src="/resource/images/products/200/6BEF5117-5056-AE36-FEB9639741631B1E_b_h_200x100.jpg" width="200" height="100" border="0" alt="UPB50" /> mais olha o resultado... Array ( [0] => Array ( [0] => ) [1] => Array ( [0] => /resource/images/header/flag_BR.gif" alt="BRAZIL" width="18" height="11" border="0" align="absmiddle" id="header-country-flag ) ) Array ( [0] => Array ( [0] => ) [1] => Array ( [0] => /resource/images/products/200/6BEE4158-5056-AE36-FE934FC9AA44D703_f_h_200x100.jpg" width="200" height="100" border="0" alt="UPB50" /> Por favor se poder me ajudar preciso muito disso... obrigado pela paciencia. Compartilhar este post Link para o post Compartilhar em outros sites
Paulo André 0 Denunciar post Postado Março 13, 2009 Vá citando os erros que tentamos arrumá-los por aqui, é coisa simples, não precisa gastar dinheiro, só um pouco de tempo para aprender. http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Diga quais os erros que foram exibidos, o que era esperado, como está seu código e etc. []'s Compartilhar este post Link para o post Compartilhar em outros sites
hinom 5 Denunciar post Postado Março 13, 2009 obrigado deu certo... se fose assim $string="<img>imagem/asd/asd/asd/asdas/tal.jpg</img>"; como se faria ? $er='<{3}>(.*)</>' expressão $er = '^[<]([img=+)*[>]*(.+)[<](])*[>]?$'; sample: <?php $str = '<img>imagem/asd/asd/asd/asdas/tal.jpg</img>'; $rule = '^[<]([img=+)*[>]*(.+)[<](])*[>]?$'; if( eregi( $rule, $str, $rs ) ){ print_r( $rs ); }else{ echo 'NG'; } ?> em ER, as expressões podem ser variadas e retornar o mesmo resultado outro exemplo [(\D+)] e #[^0-9]# retornam o mesmo resultado $str = '1a2b3c'; $rule = '#[^0-9]#'; echo preg_replace( $rule, '', $str ); echo '<br>'; $rule = '[(\D+)]'; echo preg_replace( $rule, '', $str ); Compartilhar este post Link para o post Compartilhar em outros sites
Paulo André 0 Denunciar post Postado Março 13, 2009 Tente assim: $er='/<img src="(.*)"(.*?)\/>/i'; Compartilhar este post Link para o post Compartilhar em outros sites
Lailton 0 Denunciar post Postado Março 13, 2009 <?php $codigo="UPB50"; $url = "http://www.apc.com/resource/include/techspec_index.cfm?base_sku=".$codigo."&isocountrycode=BR"; $lines = file ($url); $er = '/<img>(.*)<\/img>/i'; foreach ($lines as $line_num => $line) { $line=str_replace('<img src="/resource/images/',"<img>resource/images/",$line); $line=str_replace('" width="200" height="100" border="0" alt="'.$codigo.'" />','</img>',$line); if (preg_match_all($er, $line, $result)) { echo print_r($result); echo "<br>"; } } ?> resultado Array ( [0] => Array ( [0] => <img>resource/images/products/200/6BEE4158-5056-AE36-FE934FC9AA44D703_f_h_200x100.jpg</img></a><a onClick="return popUp("products/moreimages.cfm?partnum/href=/products/moreimages.cfm?partnum=UPB50&type=Back&loc=6BEF5117-5056-AE36-FEB9639741631B1E_pr.jpg target="_blank" class="nav" =""><img>resource/images/products/200/6BEF5117-5056-AE36-FEB9639741631B1E_b_h_200x100.jpg</img> ) [1] => Array ( [0] => resource/images/products/200/6BEE4158-5056-AE36-FE934FC9AA44D703_f_h_200x100.jpg</img></a><a onClick="return popUp("products/moreimages.cfm?partnum/href=/products/moreimages.cfm?partnum=UPB50&type=Back&loc=6BEF5117-5056-AE36-FEB9639741631B1E_pr.jpg target="_blank" class="nav" =""><img>resource/images/products/200/6BEF5117-5056-AE36-FEB9639741631B1E_b_h_200x100.jpg ) ) ele ta pegando mais coisas apos o </img> é so por um fim ai rsrs como fazer ? Compartilhar este post Link para o post Compartilhar em outros sites
Lailton 0 Denunciar post Postado Março 13, 2009 Tente assim: $er='/<img src="(.*)"(.*?)\/>/i'; ainda nada pessoal... <?php $codigo="UPB50"; $url = "http://www.apc.com/resource/include/techspec_index.cfm?base_sku=".$codigo."&isocountrycode=BR"; $lines = file (url); $er = '/<img>(.*)<\/img>/i'; foreach ($lines as $line_num => $line) { $line=str_replace('<img src="/resource/images/',"<img>resource/images/",$line); $line=str_replace('" width="200" height="100" border="0" alt="'.$codigo.'" />','</img>',$line); if (preg_match_all($er, $line, $result)) { echo print_r($result); echo "<br>"; } } ?> Array ( [0] => Array ( [0] => <img>resource/images/products/200/6BEE4158-5056-AE36-FE934FC9AA44D703_f_h_200x100.jpg</img></a><a onClick="return popUp("products/moreimages.cfm?partnum/href=/products/moreimages.cfm?partnum=UPB50&type=Back&loc=6BEF5117-5056-AE36-FEB9639741631B1E_pr.jpg target="_blank" class="nav" =""><img>resource/images/products/200/6BEF5117-5056-AE36-FEB9639741631B1E_b_h_200x100.jpg</img> ) [1] => Array ( [0] => resource/images/products/200/6BEE4158-5056-AE36-FE934FC9AA44D703_f_h_200x100.jpg</img></a><a onClick="return popUp("products/moreimages.cfm?partnum/href=/products/moreimages.cfm?partnum=UPB50&type=Back&loc=6BEF5117-5056-AE36-FEB9639741631B1E_pr.jpg target="_blank" class="nav" =""><img>resource/images/products/200/6BEF5117-5056-AE36-FEB9639741631B1E_b_h_200x100.jpg ) ) resource/images/products/200/6BEE4158-5056-AE36-FE934FC9AA44D703_f_h_200x100.jpg preciso pegar so essa imagem.. so o que tiver dentro do img aqui /img (FIM) note que ele ta pegando o </a><a .................. Compartilhar este post Link para o post Compartilhar em outros sites
hinom 5 Denunciar post Postado Março 13, 2009 precisa ser em ER ? exemplo simples e prático <?php function TagExtract( $str, $tagIni, $tagEnd ) { $arr = explode( $tagIni, $str ); foreach( $arr as $k => $v ) { $arr[$k] = substr( $v, 0, strpos( $v, $tagEnd ) ); } if( empty( $arr[0] ) ) { unset( $arr[0] ); } return $arr; } $str = <<<STR <html> <body> BAR <br> LOREM ISPSUM <img src="/resource/images/products/200/6BEF5117-5056-AE36-FEB9639741631B1E_b_h_200x100.jpg" width="200" height="100" border="0" alt="UPB50" /> <br>other text2 <img src="/resource/images/products/200/ok.png" width="300" height="100" /> <br>other text3 <img src="/resource/images/products/200/image.gif" width="100" height="100" border="0" /> </body> </html> STR; $rs = TagExtract( $str, '<img src="', '"' ); print_r( $rs ); ?> Compartilhar este post Link para o post Compartilhar em outros sites
Lailton 0 Denunciar post Postado Março 14, 2009 precisa ser em ER ? exemplo simples e prático <?php function TagExtract( $str, $tagIni, $tagEnd ) { $arr = explode( $tagIni, $str ); foreach( $arr as $k => $v ) { $arr[$k] = substr( $v, 0, strpos( $v, $tagEnd ) ); } if( empty( $arr[0] ) ) { unset( $arr[0] ); } return $arr; } $str = <<<STR <html> <body> BAR <br> LOREM ISPSUM <img src="/resource/images/products/200/6BEF5117-5056-AE36-FEB9639741631B1E_b_h_200x100.jpg" width="200" height="100" border="0" alt="UPB50" /> <br>other text2 <img src="/resource/images/products/200/ok.png" width="300" height="100" /> <br>other text3 <img src="/resource/images/products/200/image.gif" width="100" height="100" border="0" /> </body> </html> STR; $rs = TagExtract( $str, '<img src="', '"' ); print_r( $rs ); ?> Resolvido Obrigado. UFFA Compartilhar este post Link para o post Compartilhar em outros sites