Tag Archives: php
PHP preg_match regex fail
So this happened. Basically the first regex causes preg_match to fail when it tries to process 128KiB ASCII zeros… and 128KiB isn’t really that many zeros. Fortunately the second regex performs much better, PHP runs out of memory before preg_match chokes on that one.
------------------- Sat Apr 01 13:17:17 [bash:5.1.16 jobs:0 error:0 time:243] jj5@charm:/home/jj5/desktop/experiment $ cat base64-regex.php <?php test( '/^(?:[A-Za-z0-9+\/]{4})*(?:[A-Za-z0-9+\/]{2}==|[A-Za-z0-9+\/]{3}=|[A-Za-z0-9+\/]{4})$/' ); test( '/^[a-zA-Z0-9\/+]{2,}={0,2}$/' ); function test( $regex ) { echo "testing: $regex\n"; $n = 0; for ( ;; ) { $n++; echo "n: $n\n"; $string = str_repeat( '0', pow( 2, $n ) ); $base64 = base64_encode( $string ); if ( preg_match( $regex, $base64 ) ) { continue; } echo "error at N = $n.\n"; return; } } ------------------- Sat Apr 01 13:17:21 [bash:5.1.16 jobs:0 error:0 time:247] jj5@charm:/home/jj5/desktop/experiment $ php base64-regex.php testing: /^(?:[A-Za-z0-9+\/]{4})*(?:[A-Za-z0-9+\/]{2}==|[A-Za-z0-9+\/]{3}=|[A-Za-z0-9+\/]{4})$/ n: 1 n: 2 n: 3 n: 4 n: 5 n: 6 n: 7 n: 8 n: 9 n: 10 n: 11 n: 12 n: 13 n: 14 n: 15 n: 16 n: 17 error at N = 17. testing: /^[a-zA-Z0-9\/+]{2,}={0,2}$/ n: 1 n: 2 n: 3 n: 4 n: 5 n: 6 n: 7 n: 8 n: 9 n: 10 n: 11 n: 12 n: 13 n: 14 n: 15 n: 16 n: 17 n: 18 n: 19 n: 20 n: 21 n: 22 n: 23 n: 24 n: 25 n: 26 n: 27 n: 28 n: 29 n: 30 n: 31 n: 32 n: 33 n: 34 n: 35 Killed ------------------- Sat Apr 01 13:18:21 [bash:5.1.16 jobs:0 error:137 time:307]
Announcing Kickass Crypto
I’m working on a PHP encryption library called Kickass Crypto.
Empty $_FILES array with PHP file upload
Wow. I just spent a few hours debugging a problem with my PHP file upload. Turns out the fix was to include an ‘id’ attribute on the file input element. Have no idea why that is required or works, but it does.
Configuring PHP with php.ini
There’s some good info about common config options over here: Where Is php.ini, the PHP Configuration File?
The phpinfo()
function will tell you which php.ini file applies.
phpSysInfo
I stumbled upon phpSysInfo, a PHP library for system information. Haven’t actually used it, yet.
Modern PHP
Some notes on features in Modern PHP.
Arrays in PHP
Some notes about arrays in PHP over here: PHP: Frankenstein arrays. I was already aware of most of that but I thought the notes at the bottom about supporting JSON were handy:
If you want to enforce an array to encode to a JSON list (all array keys will be discarded), use:
json_encode(array_values($array));
And if you want to enforce an array to encode to a JSON object, use:
json_encode((object)$array);
Also array_is_list is available as of PHP 8.1.
PDOStatement::fetchAll()
I’m reading the source code for PDOStatement::fetchAll().
sizeof PHP data structures zval and zend_value
sizeof( zval ) == 16; sizeof( zend_value ) == 8;