[Resolvido] Url EspaçO Inicio E Final
#1
Posted 16/07/2010, 07:19
#2
Posted 16/07/2010, 08:27
Seguinte, utilize a função str_replace:
<?php
$url = "testando a url.html";
str_replace(" ", "", $url)
echo $url;
//Será exibido testandoaurl.html
?>Fanzendo isto todos os caracteres conhecidos como " " (espaço) serão substituídos por "" (não espaço).
Acho que era isso, qualquer coisa posta ai.
Abraço
"O impossível é apenas questão de opinião" J.W.
--------------------------
Att.
Alan Martini
#3
Posted 16/07/2010, 11:03
/***
* Função para remover acentos de uma string
*
* @autor Thiago Belem <contato@thiagobelem.net>
*/
function removeAcentos($string, $slug = false) {
$string = strtolower($string);
// Código ASCII das vogais
$ascii['a'] = range(224, 230);
$ascii['e'] = range(232, 235);
$ascii['i'] = range(236, 239);
$ascii['o'] = array_merge(range(242, 246), array(240, 248));
$ascii['u'] = range(249, 252);
// Código ASCII dos outros caracteres
$ascii['b'] = array(223);
$ascii['c'] = array(231);
$ascii['d'] = array(208);
$ascii['n'] = array(241);
$ascii['y'] = array(253, 255);
foreach ($ascii as $key=>$item) {
$acentos = '';
foreach ($item AS $codigo) $acentos .= chr($codigo);
$troca[$key] = '/['.$acentos.']/i';
}
$string = preg_replace(array_values($troca), array_keys($troca), $string);
// Slug?
if ($slug) {
// Troca tudo que não for letra ou número por um caractere ($slug)
$string = preg_replace('/[^a-z0-9]/i', $slug, $string);
// Tira os caracteres ($slug) repetidos
$string = preg_replace('/' . $slug . '{2,}/i', $slug, $string);
$string = trim($string, $slug);
}
return $string;
}
Bom dia Dr. House M.D.
![]()
Seguinte, utilize a função str_replace:<?php $url = "testando a url.html"; str_replace(" ", "", $url) echo $url; //Será exibido testandoaurl.html ?>
Fanzendo isto todos os caracteres conhecidos como " " (espaço) serão substituídos por "" (não espaço).
Acho que era isso, qualquer coisa posta ai.
Abraço
EIA - Empreendimentos Informática e Administração
Twitter: twitter.com/eder_frances
#4
Posted 16/07/2010, 13:16
<?php
// Este e título que o usuário digitou e será transformado em URL.
$url = " testando a url ";
str_replace(" ", "", $url);
$urlFinal = strtolower(str_replace(" ", '-', $url));
echo $urlFinal.".html";
//Está exibido testandoaurl.html tudo bem ele retira todos os espaços mais teria que ser só o do inicio e do final como deixado digitado pelo usuário acima na string $url.
// Onde o resultado que preciso seria testando-a-url.html, se não tiver a verificação de espaços no inicio e fim e deixar a url está sendo gerada assim -testando-a-url-.html
?>Será possível este tipo de verificação? Obrigado por me responder.
#5
Posted 16/07/2010, 13:48
Certo, então o que pode ser feito é:
<?php
$url = "testando a url.html";
//vai criar um array com as palavras separadas onde tiver espaço
$separando = explode(" ",$url);
//vai juntar o array separando por traço ( - )
$urlnova = implode("-",$separando);
echo $url;
//Será exibido testando-a-url.html
?>"O impossível é apenas questão de opinião" J.W.
--------------------------
Att.
Alan Martini
#6
Posted 16/07/2010, 15:08
<?php
// String principal de teste de titulo digitado pelo usuario onde será gerado a url.
// Veja que o usuario digitou muitos espaços se for gerar uma url com o acima retornaria -testando-a-url-d-a--------------.html ou seja não removeu espaços desnecessario na url e nem retirou espaços inicial ou final caso tinha para não iniciar com hifem na subistituição em espaço.
$url = " testando a url d a ";
//vai criar um array com as palavras separadas onde tiver espaço
$separando = explode(" ",$url);
// Faz a contagem de explode
$nPalavras = count($separando);
// Incia o for da contagem de n de palavras.
for((int) $i=0; $i <= $nPalavras; $i++){
// Usei trim para remover espaços caso tenha sido no explode verifica se e vazio caso não verdadeiro.
if(trim($separando[$i]) <> NULL){
// A primeira palavra so inicia.
if ($i == 1){
// Inicia a criar a url.
$urlfinal .= $separando[$i];
}else{
// Juntar separando depois da primeira por traço ( - ).
$urlfinal .= "-".$separando[$i];
}
}
}
echo $urlfinal.".html";
//Será exibido testando-a-url-d-a.html
?>Obrigado desde já.
#7
Posted 16/07/2010, 16:46
O que pode ser feito é uma verificação de caracteres especiais, pode ser feito no recebimento da URL.
<?php
public static function removerAcentos($var) {
$acentos = array('ã','á','â','é','ê','í','õ','ó','ú','Ã','Á','Â','É','Ê','Í','Õ','Ó','Ú');
$normais = array('a','a','a','e','e','i','o','o','u','A','A','A','E','E','I','O','O','U');
$var = str_replace($acentos, $normais, $var);
$especiais = array('/','|','*',':','[',']','{','}',"'",'"','(', ')','<','>',',');
$var = str_replace($especiais, '', $var);
$var = str_replace(' ', '', $var);
$var = strtolower($var);
return $var;
}
?>Isso ai, abraço.
"O impossível é apenas questão de opinião" J.W.
--------------------------
Att.
Alan Martini
#8
Posted 16/07/2010, 17:08
Com expressão regular saia mais fácil isso aí.Olá amigos olha o codigo que montei se puder dar uma olhada e opinar para ajudar a melhorar ele:
<?php // String principal de teste de titulo digitado pelo usuario onde será gerado a url. // Veja que o usuario digitou muitos espaços se for gerar uma url com o acima retornaria -testando-a-url-d-a--------------.html ou seja não removeu espaços desnecessario na url e nem retirou espaços inicial ou final caso tinha para não iniciar com hifem na subistituição em espaço. $url = " testando a url d a "; //vai criar um array com as palavras separadas onde tiver espaço $separando = explode(" ",$url); // Faz a contagem de explode $nPalavras = count($separando); // Incia o for da contagem de n de palavras. for((int) $i=0; $i <= $nPalavras; $i++){ // Usei trim para remover espaços caso tenha sido no explode verifica se e vazio caso não verdadeiro. if(trim($separando[$i]) <> NULL){ // A primeira palavra so inicia. if ($i == 1){ // Inicia a criar a url. $urlfinal .= $separando[$i]; }else{ // Juntar separando depois da primeira por traço ( - ). $urlfinal .= "-".$separando[$i]; } } } echo $urlfinal.".html"; //Será exibido testando-a-url-d-a.html ?>
Obrigado desde já.
$urlFinal = preg_replace("\s+", "-", trim($url));
Com o trim você já mata os espaços no começo e no final. Depois com a expressão regular trocar qualquer seqüência de espaços por um hífen. Usar também uma função como essa removerAcentos é bom.
$urlFinal = removerAcentos(preg_replace("\s+", "-", trim($url)));
#9
Posted 16/07/2010, 17:24
#10
Posted 16/07/2010, 17:28
$urlFinal = preg_replace("/\s+/", "-", trim($url));
#11
Posted 16/07/2010, 17:37
1 user(s) are reading this topic
0 membro(s), 1 visitante(s) e 0 membros anônimo(s)










