3v4l.org

run code in 300+ PHP versions simultaneously
<?php $tests = [ ['this is a test', 'This Is a Test', false], ['why sunless tanning is A hot trend', 'Why Sunless Tanning Is a Hot Trend', false], ['Satin Sheets are a Luxury you Can Afford', 'Satin Sheets Are a Luxury You Can Afford', false], ['the Dangers Of Hiking Without Proper Shoes', 'The Dangers of Hiking Without Proper Shoes', false], ['an hour or so', 'An Hour or So', false], ['Of the meaning Of Of', 'Of the Meaning of Of', false], ['Thing With Extra Spaces', 'Thing With Extra Spaces', false], ['Thing with extra spaces', 'Thing With Extra Spaces', true], ['Observations of isolated pulsars and disk-fed X-ray binaries.', 'Observations of Isolated Pulsars and Disk-Fed X-Ray Binaries.', false] ]; function APATitle($title, $keepMultipleSpaces = false, $blackList = []) { if (!is_string($title)) { return false; } $blackList = $blackList ? array_map('strtolower', (array)$blackList) : ['a', 'an', 'and', 'at', 'but', 'by', 'for', 'in', 'nor', 'of', 'on', 'or', 'so', 'the', 'to', 'up', 'yet']; if (!$keepMultipleSpaces) { $title = preg_replace('~\s+~', ' ', $title); } return preg_replace_callback( '~(?!^)\b(?:' . implode('|', $blackList) . ')\b(?!$)(*SKIP)(*FAIL)|\b[a-z]+\b~', function ($m) { return ucfirst($m[0]); }, strtolower($title) ); } foreach ($tests as [$input, $expectedOutput, $keepMultipleSpaces]) { $output = APATitle($input, $keepMultipleSpaces); echo ($output === $expectedOutput ? 'SUCCESS' : 'FAILURE') . ":\t\"{$input}\" became \"{$output}\"\n"; }
based on j3qaW
Output for 7.2.0 - 7.2.33, 7.3.0 - 7.3.26, 7.4.0 - 7.4.13, 8.0.0 - 8.0.3
SUCCESS: "this is a test" became "This Is a Test" SUCCESS: "why sunless tanning is A hot trend" became "Why Sunless Tanning Is a Hot Trend" SUCCESS: "Satin Sheets are a Luxury you Can Afford" became "Satin Sheets Are a Luxury You Can Afford" SUCCESS: "the Dangers Of Hiking Without Proper Shoes" became "The Dangers of Hiking Without Proper Shoes" SUCCESS: "an hour or so" became "An Hour or So" SUCCESS: "Of the meaning Of Of" became "Of the Meaning of Of" SUCCESS: "Thing With Extra Spaces" became "Thing With Extra Spaces" SUCCESS: "Thing with extra spaces" became "Thing With Extra Spaces" SUCCESS: "Observations of isolated pulsars and disk-fed X-ray binaries." became "Observations of Isolated Pulsars and Disk-Fed X-Ray Binaries."