Skoro PHP jest językiem dynamicznym, jaki jest najlepszy sposób sprawdzenia, czy podane pole jest puste?
Chcę się upewnić, że:
- null jest uważane za pusty ciąg
- ciąg zawierający tylko białe znaki jest uważany za pusty
- to „0” nie jest uważane za puste
Oto, co mam do tej pory:
$question = trim($_POST['question']);
if ("" === "$question") {
// Handle error here
}
Musi być na to prostszy sposób?
php
validation
Allain Lalonde
źródło
źródło
Odpowiedzi:
źródło
Stary post, ale ktoś może go potrzebować tak jak ja;)
Zastąp
$str
swoją zmienną.NULL
i""
oba zwracają 0 podczas używaniastrlen
.źródło
if(strcmp('', $var) == 0)...
Użyj funkcji empty () PHP. Następujące rzeczy są uważane za puste
Aby uzyskać więcej informacji, sprawdź pustą funkcję
źródło
Pokornie zaakceptuję, jeśli się mylę, ale przetestowałem na własnym końcu i stwierdziłem, że poniższe działa do testowania zarówno zmiennych o wartości string (0) "", jak i NULL:
Które można również odwrócić, aby przetestować sukces jako taki:
źródło
Uważaj na fałszywe negatywy
trim()
funkcji - wykonuje rzutowanie na łańcuch przed przycięciem, a zatem zwróci np. „Array”, jeśli przekażesz jej pustą tablicę. Może to nie stanowić problemu, w zależności od sposobu przetwarzania danych, ale z podanym kodem pole o nazwiequestion[]
może zostać podane w danych POST i wyglądać na niepuste ciągi. Zamiast tego proponuję:źródło
Nie ma lepszego sposobu, ale ponieważ jest to operacja, którą zwykle wykonujesz dość często, lepiej zautomatyzuj proces.
Większość frameworków oferuje sposób, aby analizowanie argumentów było łatwym zadaniem. Możesz w tym celu zbudować własny obiekt. Szybki i brudny przykład:
Symfony masowo używa tego rodzaju cukru.
Ale mówisz o czymś więcej, ze swoim „// Błąd obsługi tutaj”. Mieszasz 2 zadania: pobieranie danych i ich przetwarzanie. To wcale nie jest to samo.
Istnieją inne mechanizmy, których możesz użyć do weryfikacji danych. Ponownie frameworki mogą pokazać najlepsze praktyki.
Utwórz obiekty reprezentujące dane formularza, a następnie dołącz procesy i powróć do niego. Wydaje się to o wiele bardziej pracochłonne niż hakowanie szybkiego skryptu PHP (i jest to pierwszy raz), ale jest on wielokrotnego użytku, elastyczny i znacznie mniej podatny na błędy, ponieważ sprawdzanie poprawności formularzy za pomocą zwykłego PHP ma tendencję do szybkiego przekształcania się w kod spaguetti.
źródło
Ten sprawdza tablice i ciągi:
źródło
aby być bardziej solidnym (tabulacja, powrót…), definiuję:
źródła:
źródło
Jeśli chcesz sprawdzić, czy pole ma wartość, może to być a
string
, anarray
lub nieokreślone. Tak więc wystarczyźródło
Empty () kiedyś działało w tym celu, ale zachowanie empty () zmieniło się kilka razy. Jak zawsze, dokumenty php są zawsze najlepszym źródłem dokładnego zachowania, a komentarze na tych stronach zwykle zawierają dobrą historię zmian w czasie. Jeśli chcesz sprawdzić brak właściwości obiektu, w tej chwili bardzo obronną metodą jest:
źródło