Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

luizinhoscripts

[Resolvido] Expressão regular para filtrar conteúdo de string

Recommended Posts

Olá pessoal, tenho uma string que vem no seguinte formato: (-17.7451911,%20-48.6252629)

 

Gostaria de retirar os () e a vírgula e obter somente os números, tentei com substr, com str_replace, mas encontrei problemas pois muitas vezes os números não são desse tamanho...

 

Se alguém puder me ajudar, agradeço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dá uma olhada em filter_var com as constantes pré-definidas:

 

<?php
$x = '(-17.7451911,%20-48.6252629)';
var_dump ( filter_var ( $x, FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION ) ); // string(24) "-17.745191120-48.6252629" 

 

É este o retorno que você espera? Se não for, qual seria?

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá pessoal, tenho uma string que vem no seguinte formato: (-17.7451911,%20-48.6252629)

 

Gostaria de retirar os () e a vírgula e obter somente os números, tentei com substr, com str_replace, mas encontrei problemas pois muitas vezes os números não são desse tamanho...

 

Se alguém puder me ajudar, agradeço.

voce pode fazer assim

$numeros = str_replace(',','',$_POST['campo']); //para tirar a virgula para tirar o () é assim

$numeros .= str_replace('(','',$_POST['campo']);

$numeros .= str_replace(')','',$_POST['campo']);

echo $numeros;

 

ve se funciona.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quebra a string antes de filtrá-la:

 

$strings = explode(",", $string);

Daí você terá um vetor de strings.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sempre serão separados por vírgula? Se sim, dá pra fazer assim:

 

<?php
$x = '(-17.7451911,%20-48.6252629)';
$array = explode ( ',', $x );
foreach ( $array as &$valor ) {
$valor = filter_var ( $valor, FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION );
}
var_dump ( $array ); // array(2) { [0]=> string(11) "-17.7451911" [1]=> &string(13) "20-48.6252629" } 

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha só! Muito obrigado pela luz...

 

consegui hoje fazer de forma diferente...

 

$array = explode ( ',', $p );

 

$lat = str_replace("(","",$array[0]);

$lon = str_replace(")","",$array[1]);

 

aí ele me retornou exatamente o que queria...

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.