3v4l.org

run code in 500+ PHP versions simultaneously
<?php echo "Testing DOMDocument::createElement() with strictErrorChecking:\n"; echo "PHP Version: " . PHP_VERSION . "\n\n"; function testWithStrictMode($strict) { $doc = new DOMDocument(); $doc->strictErrorChecking = $strict; echo "=== strictErrorChecking = " . ($strict ? "TRUE" : "FALSE") . " ===\n"; $testCases = [ ['123element', 'Name starting with digit'], ['my element', 'Name with space'], ['my@element', 'Name with @ symbol'], ['', 'Empty name'], ['!element', 'Name with exclamation'], ['elem&ent', 'Name with ampersand'], ['.element', 'Name starting with dot'], ['-element', 'Name starting with hyphen'], ['validElement', 'Valid name'], ]; foreach ($testCases as [$name, $desc]) { echo str_pad("$desc ('$name'):", 40); try { $result = $doc->createElement($name); if ($result === false) { echo "Returned FALSE\n"; } else { echo "SUCCESS (" . $result->nodeName . ")\n"; } } catch (DOMException $e) { echo "EXCEPTION: " . $e->getMessage() . "\n"; } } echo "\n"; } // Test with strict error checking enabled (default) testWithStrictMode(true); // Test with strict error checking disabled (legacy behavior) testWithStrictMode(false);
Output for 8.1.34, 8.2.0 - 8.2.30, 8.3.0 - 8.3.30, 8.4.1 - 8.4.18, 8.5.0 - 8.5.3
Testing DOMDocument::createElement() with strictErrorChecking: PHP Version: 8.5.3 === strictErrorChecking = TRUE === Name starting with digit ('123element'):EXCEPTION: Invalid Character Error Name with space ('my element'): EXCEPTION: Invalid Character Error Name with @ symbol ('my@element'): EXCEPTION: Invalid Character Error Empty name (''): EXCEPTION: Invalid Character Error Name with exclamation ('!element'): EXCEPTION: Invalid Character Error Name with ampersand ('elem&ent'): EXCEPTION: Invalid Character Error Name starting with dot ('.element'): EXCEPTION: Invalid Character Error Name starting with hyphen ('-element'): EXCEPTION: Invalid Character Error Valid name ('validElement'): SUCCESS (validElement) === strictErrorChecking = FALSE === Name starting with digit ('123element'): Warning: DOMDocument::createElement(): Invalid Character Error in /in/vI5Z0 on line 27 Returned FALSE Name with space ('my element'): Warning: DOMDocument::createElement(): Invalid Character Error in /in/vI5Z0 on line 27 Returned FALSE Name with @ symbol ('my@element'): Warning: DOMDocument::createElement(): Invalid Character Error in /in/vI5Z0 on line 27 Returned FALSE Empty name (''): Warning: DOMDocument::createElement(): Invalid Character Error in /in/vI5Z0 on line 27 Returned FALSE Name with exclamation ('!element'): Warning: DOMDocument::createElement(): Invalid Character Error in /in/vI5Z0 on line 27 Returned FALSE Name with ampersand ('elem&ent'): Warning: DOMDocument::createElement(): Invalid Character Error in /in/vI5Z0 on line 27 Returned FALSE Name starting with dot ('.element'): Warning: DOMDocument::createElement(): Invalid Character Error in /in/vI5Z0 on line 27 Returned FALSE Name starting with hyphen ('-element'): Warning: DOMDocument::createElement(): Invalid Character Error in /in/vI5Z0 on line 27 Returned FALSE Valid name ('validElement'): SUCCESS (validElement)

preferences:
51.59 ms | 1021 KiB | 4 Q