Eu tenho uma função isNotEmpty que retorna true se a string não estiver vazia e false se a string estiver vazia. Eu descobri que não está funcionando se eu passar uma string vazia por ele.
function isNotEmpty($input)
{
$strTemp = $input;
$strTemp = trim($strTemp);
if(strTemp != '') //Also tried this "if(strlen($strTemp) > 0)"
{
return true;
}
return false;
}
A validação da string usando isNotEmpty é feita:
if(isNotEmpty($userinput['phoneNumber']))
{
//validate the phone number
}
else
{
echo "Phone number not entered<br/>";
}
Se a string estiver vazia, o resto não será executado, não entendo o motivo, alguém pode esclarecer isso, por favor.
php
string
validation
bgosalci
fonte
fonte
Respostas:
Problema simples, na verdade. Mudança:
para
É possível que você também queira alterá-lo para:
desde
!= ''
que retornará true se você passar é numérico 0 e alguns outros casos devido à conversão automática de tipo do PHP .Você não deve usar a função built-in empty () para isso; veja os comentários e as tabelas de comparação de tipos PHP .
fonte
O PHP possui uma função integrada chamada
empty()
teste, digitandoif(empty($string)){...}
Referência php.net: php emptyfonte
Eu sempre uso uma expressão regular para verificar se há uma string vazia, que remonta aos dias CGI / Perl e também com Javascript, então por que não também com PHP, por exemplo (embora não testado)
Onde \ S representa qualquer caractere que não seja um espaço em branco
fonte
.
, não corresponde a novas linhas -[\s\S]
é um truque para solucionar esse problema. Isso é comum em JavaScript, mas em PHP você pode usar a/s
flag para fazer o ponto corresponder a todos os caracteres. E o stackoverflow.com/a/4544646/5411817 menciona:(?s)
ativa os
modo e(?-s)
desativa se estiver desativado. Uma vez desativado, qualquer seguinte.
não corresponderá a uma nova linha. se você deseja ativar / desativar o comutador inline (incorporado dentro da regex) em vez de como um sinalizador de regex.Na sua
if
cláusula na função, você está se referindo a uma variávelstrTemp
que não existe.$strTemp
existe, no entanto.Mas o PHP já tem uma
empty()
função disponível; por que fazer o seu?Do php.net:
http://www.php.net/empty
fonte
O PHP avalia uma string vazia como false, então você pode simplesmente usar:
fonte
Basta usar a função strlen ()
fonte
Php 5.3
a função retorne5
se$s
for do tipoarray
.Php > 5.3
criará uma exceção. Eu recomendo usaris_string($s) && str_len($s) > 0
.>0
apenas para fins de leitura.Acabei de escrever minha própria função, is_string para verificação de tipo e strlen para verificar o comprimento.
Aqui está um pequeno teste repl.it
EDIT: Você também pode usar a função de apara para testar se a string também está em branco.
fonte
Eu precisava testar um campo vazio em PHP e usado
o que funcionou bem para mim.
fonte
Bem, aqui está o método curto para verificar se a string está vazia ou não.
fonte
strlen()
foi recomendada em 2014 nesta página. Sua resposta não agrega nenhum novo valor.Você pode simplesmente converter para bool, não se esqueça de lidar com zero.
fonte
(bool)$str
é o mesmo que fazer!empty($str)
e tem o mesmo problema com'0'
. Leia PHP Booleans , a seção "Convertendo em booleano". Além disso, você entendeu de trás para frente - deveria ser!(bool)$string'
. Ou sua função deve ser nomeada "isNotEmpty". Independentemente, você está preso ao manuseio incorreto de '0'.0
problema, lide com isso antes de retornar a string fundida. E muito obrigado, esqueci a negação!
(nomes de funções negados são uma má prática). Editou minha postagem.Eu sei que esse segmento era muito antigo, mas eu só queria compartilhar uma das minhas funções. Esta função abaixo pode verificar cadeias vazias, cadeias com comprimentos máximos, comprimentos mínimos ou comprimento exato. Se você deseja procurar por strings vazias, basta colocar $ min_len e $ max_len como 0.
fonte
talvez você possa tentar isso
isso é por causa da configuração do php no php.ini
fonte
se você possui um campo chamado serial_number e deseja verificar vazio,
Dessa forma, você pode digitar todos os arquivos no loop com outra função vazia
fonte
empty()
já foi recomendado nesta página em 2009.Esta é a solução curta e eficaz, exatamente o que você está procurando:
fonte
null
para string vazia para comparação. Nesse caso, seria muito mais clara para dizer o que quer dizer:$input > ''
. Ou seja, "faça uma comparação lexical entre a sequência de entrada e uma sequência vazia". Ou ignorar espaços em branco nas extremidades:trim($input) > ''
.$input
é'0'
. Não está claro se o php faz umanumeric
oulexical
comparação, quando o primeiro argumento é uma string numérica.Você tem uma resposta, mas no seu caso você pode usar
ou
fonte
empty("0")
empty
- esta resposta já foi dada, portanto, dizê-la novamente não contribui com nada. Pior, como foi discutido nos comentários, está errado - qualquer valor equivalente a0
será considerado "vazio". 2.is_string
está errado de uma maneira diferente - uma string vazia''
é uma string, portanto retornará verdadeira nesse caso - falha ao fazer o que a pergunta faz.