

But as of PHP7 that's definitely no longer true. Well, that was probably true in old versions of PHP. There's a LOT of misinformation here, which I want to correct! Many people have warned against using strlen(), because it is "super slow". So it would seem you need either is_null() or isset() in addition to strlen() if you care whether or not the original value was null. !is_null(): $bar is truly an empty string If ( strlen ( $bar ) = 0 & isset( $bar )) echo 'isset(): $bar is truly an empty string ' If ( strlen ( $bar ) = 0 & ! is_null ( $bar )) echo '!is_null(): $bar is truly an empty string ' If ( strlen ( $foo ) = 0 & isset( $foo )) echo 'isset(): $foo is truly an empty string ' Įlse echo 'isset(): $foo is probably null ' If ( strlen ( $foo ) = 0 & ! is_null ( $foo )) echo '!is_null(): $foo is truly an empty string ' Įlse echo '!is_null(): $foo is probably null ' If ( $len = 0 ) echo 'Null length is still Zero ' If ( strlen ( $foo ) = 0 ) echo 'Null length is Zero ' So how do you know if the value was null, or truly an empty string? I would like to demonstrate that you need more than just this function in order to truly test for an empty string. If so, then you are likely experiencing this changed behavior. Strlen() expects parameter 1 to be string, array given in /var/www/sis/lib/functions/advanced_search_lib.php on line 1028

This likely affects other functions, so if you are getting different behaviors or new bugs suddenly, check if you have upgraded to 5.3 (which we did recently), and then check for some warnings in your logs like this: So, in PHP 5.3, strlen($attributes) returns NULL, while in PHP 5.2, strlen($attributes) returns the integer 5. There are some exceptions to this rule, such as the get_class() function, which will continue to return FALSE on error." This parameter parsing API causes functions to return NULL when passed incompatible parameters. "The newer internal parameter parsing API has been applied across all the extensions bundled with PHP 5.3.x.

In 5.3, this changed, as noted in the following point in the backward incompatible changes in 5.3 ( ): This is because in 5.2 strlen will automatically cast anything passed to it as a string, and casting an array to a string yields the string "Array". We just ran into what we thought was a bug but turned out to be a documented difference in behavior between PHP 5.2 & 5.3.
#PHP TRIM TEXT TO LENGTH CODE#
The database column is in another character set (UTF-16, ISO-8859-1, etc.) with a length defined in characters / code points.įind the character set used, and pass it explicitly to the length function. The database column has a length defined in bytes (e.g. mysql varchar(200) for a utf-8 database).Ģ. Most likely case: the database column is UTF-8 with a length defined in unicode code points (e.g. When checking for length to make sure a value will fit in a database field, be mindful of using the right function.ġ.
#PHP TRIM TEXT TO LENGTH ARCHIVE#
Getting Started Introduction A simple tutorial Language Reference Basic syntax Types Variables Constants Expressions Operators Control Structures Functions Classes and Objects Namespaces Enumerations Errors Exceptions Fibers Generators Attributes References Explained Predefined Variables Predefined Exceptions Predefined Interfaces and Classes Predefined Attributes Context options and parameters Supported Protocols and Wrappers Security Introduction General considerations Installed as CGI binary Installed as an Apache module Session Security Filesystem Security Database Security Error Reporting User Submitted Data Hiding PHP Keeping Current Features HTTP authentication with PHP Cookies Sessions Dealing with XForms Handling file uploads Using remote files Connection handling Persistent Database Connections Command line usage Garbage Collection DTrace Dynamic Tracing Function Reference Affecting PHP's Behaviour Audio Formats Manipulation Authentication Services Command Line Specific Extensions Compression and Archive Extensions Cryptography Extensions Database Extensions Date and Time Related Extensions File System Related Extensions Human Language and Character Encoding Support Image Processing and Generation Mail Related Extensions Mathematical Extensions Non-Text MIME Output Process Control Extensions Other Basic Extensions Other Services Search Engine Extensions Server Specific Extensions Session Extensions Text Processing Variable and Type Related Extensions Web Services Windows Only Extensions XML Manipulation GUI Extensions Keyboard Shortcuts ? This help j Next menu item k Previous menu item g p Previous man page g n Next man page G Scroll to bottom g g Scroll to top g h Goto homepage g s Goto search
