guirimst Postado Outubro 13, 2011 Denunciar Share Postado Outubro 13, 2011 (editado) Boa noite a todos, estou com problema na função preg_match no php. As imagens são cadastradas corretamente e exibidas, mas aparece o seguinte erro:Warning: preg_match() [function.preg-match]: No ending delimiter '^' found in C:\xampp\htdocs\exemplos\albumfoto\uploadff.php on line 77já retirei o sinal "^" e continua dando erro, não sei o que esta acontecendo, já tentei mudar de várias formas e nada, vejam o codigo abaixo: if(preg_match("^image\/($formatos)$", $arquivo["type"][$key])) { $erros[] = "Formato do arquivo [$nomefoto] não permitido ou inválido, são permitidos:<br> $formatos."; }A variavel $formatos já esta sendo declarada com os valores dos formatos das extensões das imagens.Se alguém puder me ajudar, ficaria agradecido e agradeço desde jáObrigado a todos Editado Outubro 24, 2011 por guirimst Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Willian Gustavo Veiga Postado Outubro 14, 2011 Denunciar Share Postado Outubro 14, 2011 Tente assim: if(preg_match("/^image\/($formatos)$/", $arquivo["type"][$key]))Um abraço. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 guirimst Postado Outubro 14, 2011 Autor Denunciar Share Postado Outubro 14, 2011 Boa noite Willian, tentei fazer isto que voce demonstrou, mas cai na mensagem de erro logo abaixo do codigoif(preg_match("/^image\/($formatos)$/", $arquivo["type"][$key])) { $erros[] = "Formato do arquivo [$nomefoto] não permitido ou inválido, são permitidos:<br> $formatos."; }Infelizmente não deu certo :( Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Willian Gustavo Veiga Postado Outubro 15, 2011 Denunciar Share Postado Outubro 15, 2011 preg_match retornou false, por isso entrou no if. Qual o conteúdo de $arquivo["type"][$key] ?Um abraço. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 guirimst Postado Outubro 18, 2011 Autor Denunciar Share Postado Outubro 18, 2011 Boa noite Willian, desculpe a demora em responder, estava com problemas de saude. O conteudo da variavel é os formatos das fotos. Mas vou postar o codigo toda pra voce ver:<?php$con = new Conexao("$homeDB");$larguraMax = 10000; // largura em pixels$alturaMax = 10000; // altura em pixels$tamanhoMax = 10000000; // tamanho em bytes$formatos = "pjpeg|jpeg|png|gif|bmp|x-png|jpg"; // extensoes permitidas# Criando as mensagens de erro$erro[] = "O tamanho do arquivo enviado é maior que o permitido [".($tamanhoMax/10000)." kb].";$erro[] = "A largura da imagem é maior que o permitido [$larguraMax pixels].";$erro[] = "A altura da imagem é maior que o permitido [$alturaMax pixels].";$erro[] = "O arquivo já existe no diretório.";$erro[] = "Formato do arquivo não permitido ou inválido, são permitidos:<br> $formatos.";if(isset($_FILES["fotos"])){ function retira_acentos( $texto ) { $array1 = array( "á", "à", "â", "ã", "ä", "é", "è", "ê", "ë", "í", "ì", "î", "ï", "ó", "ò", "ô", "õ", "ö", "ú", "ù", "û", "ü", "ç" , "Á", "À", "Â", "Ã", "Ä", "É", "È", "Ê", "Ë", "Í", "Ì", "Î", "Ï", "Ó", "Ò", "Ô", "Õ", "Ö", "Ú", "Ù", "Û", "Ü", "Ç" ); $array2 = array( "a", "a", "a", "a", "a", "e", "e", "e", "e", "i", "i", "i", "i", "o", "o", "o", "o", "o", "u", "u", "u", "u", "c" , "A", "A", "A", "A", "A", "E", "E", "E", "E", "I", "I", "I", "I", "O", "O", "O", "O", "O", "U", "U", "U", "U", "C" ); return str_replace( $array1, $array2, $texto ); } foreach ($_FILES["fotos"]["name"] as $key => $name) { $arquivo = $_FILES["fotos"]; #Verificando se a imagem foi enviada if(isset($arquivo["name"][$key]) && $arquivo["name"][$key] != "" && !empty($arquivo["name"][$key])) { $dimensoes = @getimagesize($arquivo["tmp_name"][$key]); $nomefoto = strtolower($_FILES["fotos"]["name"][$key]); $nomefoto = retira_acentos($nomefoto); # Retirando espacos no nome do arquivo $espacos = explode(" ",$nomefoto); if(count($espacos) > 1) { $nomefoto = strtolower(ereg_replace(' ', '_', $nomefoto)); } # Se o Tamanho do arquivo é permitido if($arquivo["size"][$key] > $tamanhoMax) { # Adiciona o erro no array erros[] $tamorig = $arquivo["size"][$key]; $erros[] = "O tamanho do arquivo enviado [$nomefoto] é maior que o permitido [".($tamanhoMax/10000)." kb]."; } # Se a Largura do arquivo é permitida if($dimensoes[0] > $larguraMax) { $erros[] = "A largura da imagem [$nomefoto] é maior que o permitido [$larguraMax pixels]."; } # Se a Altura do arquivo é permitida if($dimensoes[1] > $alturaMax) { $erros[] = "A altura da imagem [$nomefoto] é maior que o permitido [$alturaMax pixels]."; } # Verifica se o arquivo já existe no diretorio if(file_exists("fotos/$nomefoto")) { //$erros[] = "[$nomefoto] $erro[3]"; } # Verifica se extensao é permitida if(preg_match("/^image\/($formatos)$/", $arquivo["type"][$key])) { $erros[] = "Formato do arquivo [$nomefoto] não permitido ou inválido, são permitidos:<br> $formatos."; } # O array erros não tiver nenhum indice o upload é permitido/realizado if(!isset($erros)) { $nomeRam = md5(uniqid(time())).$nomefoto; $imagem_dir = "fotos/".$nomeRam; if( move_uploaded_file($_FILES["fotos"]["tmp_name"][$key], $imagem_dir)) { $sucesso[] = "Upload do arquivo [$nomefoto] efetuado com sucesso."; $con = new Conexao("$homeDB"); $urlfoto = "fotos/".$nomeRam; $news = new Crud('fotos'); $news->insert("idmateria,urlfoto","$id,'$urlfoto'"); $news->execute(); } } } else{ //$erros[] = "Nenhum arquivo foi enviado."; } } # Verifica se existem erros no array if(isset($erros)) { foreach($erros as $erro) { echo "<p class ='error'>$erro</p>"; } } # Verifica quais imagens tiveram sucesso no upload if(isset($sucesso)) { foreach($sucesso as $up) { echo "<p class='success'>$up</p>"; } echo "<span class=\"hide\" id=\"nomefoto\">$nomeRam</span>"; }}?>Este codigo é na parte administrativa do site. Mas queria que as fotos fossem para o diretorio da index, mas não estou conseguindo colocar o endereço no arquivo $_FILES :( Se eu colocar no mesmo diretorio do codigo a pasta "FOTOS" é salvo e aberto corretamente, mas queria isto na index. Poderia também me auxiliar nisto? Agradeço desde já Willian Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Willian Gustavo Veiga Postado Outubro 20, 2011 Denunciar Share Postado Outubro 20, 2011 Olha sua string de formatos e depois olha com o que você está tentando casar (match).Um abraço. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 guirimst Postado Outubro 24, 2011 Autor Denunciar Share Postado Outubro 24, 2011 Obrigado Willian, agora deu certo com o que voce havia me passado, não sei porque antes não dava, mexi tanto que alguma coisa que devo der mudado , mas claro que com sua ajuda também foi essencialif(preg_match("/^image\/($formatos)$/", $arquivo["type"][$key]))Obrigado.Agora tenho outra duvida:este codigo grava as imagens numa pasta chamada "fotos" na area administrativa do site. Mas preciso que elas aparecem na INDEX e são dois diretorios acima. Exemplo: MEUSITE/adm/administração/AREAADMINISTRATIVAEntão queria que as fotos armazenadas na area administrativa fosse pra index. La na index o codigo é este:<? foreach($body as $news) { $pageid = $news[0]; $titulo = $news[1]; $materia = $news[2]; $datap = $news[3]; ?> <tr> <td><h2><?=ucfirst($titulo)?> <p class="data"><?=$datap?> </h2> <div class="buttonwrapper"> <a class="squarebutton" style="margin-left: 480px" href="album.php"><span>Retornar à Galeria</span></a> </div> </td> </tr> <tr> <td><p> </p><?=$materia?><p> </p></td> </tr> <? } print "</table><p> </p><p> </p>"; print "<table id=\"gallery\">"; $news = new Crud("fotos"); $body = $news->executeSelectToArray("urlfoto|idfoto|idmateria","idmateria = $pageid"); if($body != 0) { $v = 0; foreach($body as $news) { $v ++; $urlfoto = $news[0]; $idfoto = $news[1]; $idmateria = $news[2]; if($v == 4 || $v == 0){ print "<tr>"; $v = 1;} ?> <td > <div class="photo sample2" id="<?=$idfoto?>"> <a href="<?=$urlfoto?>" rel="lightbox[roadtrip]"><span></span><img src="thumb.php?img=<?=$urlfoto?>" width="180" height="130" alt="clique para ampliar" /></a> </div> </td> <? if($v == 4 || $v == 0){print "</tr>"; $v = 1; } } } ?>Onde esta em negrito $news = new Crud("fotos"); é a pasta das fotos, o ligthbox esta aparecendo mas as fotos precisavam vir e eu não estou conseguindo chama-las, já tentei links e tudo mais e nada.Poderia me ajudar novamente Willian?? Agradeço desde jáEstava me esquecendo este local da "PASTA" das fotos no qual se referi no codigo fica na area administrativa Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Willian Gustavo Veiga Postado Outubro 25, 2011 Denunciar Share Postado Outubro 25, 2011 Para outra dúvida, crie outro tópico. Tentarei te ajudar lá.Outra coisa, poste o código nas tags de código do fórum, fica mais legível.Ainda bem que o seu problema foi resolvido.Um abraço. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 guirimst Postado Outubro 27, 2011 Autor Denunciar Share Postado Outubro 27, 2011 Tudo bem Willian, farei isto, desculpa Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Willian Gustavo Veiga Postado Outubro 27, 2011 Denunciar Share Postado Outubro 27, 2011 (editado) Não precisa pedir desculpas. Só falo essas coisas para ajudar a manter a ordem na casa. :)Um abraço. Editado Outubro 27, 2011 por Willian Gustavo Veiga Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
guirimst
Boa noite a todos, estou com problema na função preg_match no php. As imagens são cadastradas corretamente e exibidas, mas aparece o seguinte erro:
Warning: preg_match() [function.preg-match]: No ending delimiter '^' found in C:\xampp\htdocs\exemplos\albumfoto\uploadff.php on line 77
já retirei o sinal "^" e continua dando erro, não sei o que esta acontecendo, já tentei mudar de várias formas e nada, vejam o codigo abaixo:
if(preg_match("^image\/($formatos)$", $arquivo["type"][$key]))
{
$erros[] = "Formato do arquivo [$nomefoto] não permitido ou inválido, são permitidos:<br> $formatos.";
}
A variavel $formatos já esta sendo declarada com os valores dos formatos das extensões das imagens.
Se alguém puder me ajudar, ficaria agradecido e agradeço desde já
Obrigado a todos
Editado por guirimstLink para o comentário
Compartilhar em outros sites
9 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.