guirimst Posted October 13, 2011 Report Share Posted October 13, 2011 (edited) 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 Edited October 24, 2011 by guirimst Quote Link to comment Share on other sites More sharing options...
0 Willian Gustavo Veiga Posted October 14, 2011 Report Share Posted October 14, 2011 Tente assim: if(preg_match("/^image\/($formatos)$/", $arquivo["type"][$key]))Um abraço. Quote Link to comment Share on other sites More sharing options...
0 guirimst Posted October 14, 2011 Author Report Share Posted October 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 :( Quote Link to comment Share on other sites More sharing options...
0 Willian Gustavo Veiga Posted October 15, 2011 Report Share Posted October 15, 2011 preg_match retornou false, por isso entrou no if. Qual o conteúdo de $arquivo["type"][$key] ?Um abraço. Quote Link to comment Share on other sites More sharing options...
0 guirimst Posted October 18, 2011 Author Report Share Posted October 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 Quote Link to comment Share on other sites More sharing options...
0 Willian Gustavo Veiga Posted October 20, 2011 Report Share Posted October 20, 2011 Olha sua string de formatos e depois olha com o que você está tentando casar (match).Um abraço. Quote Link to comment Share on other sites More sharing options...
0 guirimst Posted October 24, 2011 Author Report Share Posted October 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 Quote Link to comment Share on other sites More sharing options...
0 Willian Gustavo Veiga Posted October 25, 2011 Report Share Posted October 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. Quote Link to comment Share on other sites More sharing options...
0 guirimst Posted October 27, 2011 Author Report Share Posted October 27, 2011 Tudo bem Willian, farei isto, desculpa Quote Link to comment Share on other sites More sharing options...
0 Willian Gustavo Veiga Posted October 27, 2011 Report Share Posted October 27, 2011 (edited) Não precisa pedir desculpas. Só falo essas coisas para ajudar a manter a ordem na casa. :)Um abraço. Edited October 27, 2011 by Willian Gustavo Veiga Quote Link to comment Share on other sites More sharing options...
Question
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
Edited by guirimstLink to comment
Share on other sites
9 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.