3v4l.org

run code in 300+ PHP versions simultaneously
<?PHP /** * Spintax - A helper class to process Spintax strings. * @name Spintax * @author Jason Davis - http://www.codedevelopr.com/ */ class Spintax { public function process($text) { return preg_replace_callback( '/\{(((?>[^\{\}]+)|(?R))*)\}/x', array($this, 'replace'), $text ); } public function replace($text) { $text = $this->process($text[1]); $parts = explode('|', $text); return $parts[array_rand($parts)]; } } ?> <?PHP $spintax = new Spintax(); $string = '{Hello|Howdy|Hola} to you, {Mr.|Mrs.|Ms.} {Smith|Williams|Davis}!'; echo $spintax->process($string); ?>
Output for 5.1.4, 5.3.19, 5.5.2, 5.5.23, 5.6.13, 7.0.2, 7.3.1
Hola to you, Mrs. Smith!
Output for 5.0.0, 5.2.16, 5.3.12, 5.4.10, 5.5.10, 5.5.16, 7.2.0, 7.3.0
Howdy to you, Mr. Williams!
Output for 5.2.8, 5.2.17, 5.3.6, 5.3.14, 5.3.24, 5.3.28, 5.4.34, 5.5.7, 5.6.4, 5.6.7, 7.0.18, 7.2.7, 7.2.13
Howdy to you, Ms. Smith!
Output for 5.0.1, 5.0.3, 5.4.5, 5.4.9, 5.4.18, 5.4.26, 5.6.28, 7.1.2, 7.2.12
Howdy to you, Mrs. Davis!
Output for 5.1.5, 5.3.0, 5.3.27, 5.4.11, 5.5.21, 5.6.18, 5.6.22, 7.2.11
Hola to you, Mr. Smith!
Output for 5.3.13, 5.3.16 - 5.3.17, 5.4.28, 5.6.6, 7.0.17, 7.2.10
Hola to you, Mr. Williams!
Output for 5.2.4 - 5.2.5, 5.3.10, 5.4.8, 5.6.0, 5.6.20, 7.0.20, 7.2.8 - 7.2.9
Hola to you, Mrs. Davis!
Output for 5.3.25, 5.6.15, 7.0.0, 7.1.1, 7.1.5, 7.2.6
Hello to you, Mr. Williams!
Output for 5.0.4, 5.3.7, 5.3.20 - 5.3.21, 5.4.30, 5.6.19, 7.2.5
Hola to you, Mr. Davis!
Output for 5.3.11, 5.4.36 - 5.4.37, 5.5.11, 5.5.19, 5.5.24, 7.2.4
Howdy to you, Ms. Williams!
Output for 5.0.5, 5.1.2, 5.2.3, 5.4.32, 5.4.35, 5.5.36, 7.0.3, 7.1.0, 7.2.2 - 7.2.3
Hola to you, Ms. Williams!
Output for 5.2.6, 5.4.7, 5.5.31, 5.6.1, 7.0.12, 7.0.19, 7.1.6, 7.2.1
Hello to you, Mrs. Williams!
Output for 5.1.1, 5.2.0, 5.2.9, 5.4.1, 5.4.21 - 5.4.22, 5.4.24, 5.5.32, 5.5.34, 7.0.15, 7.1.25
Howdy to you, Mrs. Smith!
Output for 5.2.15, 5.3.5, 5.4.4, 5.4.13, 5.4.27, 5.4.40, 5.5.3 - 5.5.4, 5.5.9, 5.5.20, 7.0.5, 7.1.7
Hello to you, Ms. Smith!
Output for 5.3.1, 5.5.28, 5.6.3, 7.0.4, 7.0.8, 7.1.4
Hello to you, Mr. Davis!
Output for 5.4.2, 5.4.41 - 5.4.42, 5.5.15, 5.6.2, 5.6.17, 5.6.24, 7.0.10 - 7.0.11, 7.1.3
Hello to you, Mrs. Smith!
Output for 5.1.3, 5.2.10 - 5.2.11, 5.4.19, 5.4.38, 5.5.5, 5.6.11, 7.0.16
Howdy to you, Mr. Smith!
Output for 5.1.6, 5.3.3, 5.4.6, 5.5.26 - 5.5.27, 5.5.35, 5.6.12, 5.6.25 - 5.6.26, 5.6.30, 7.0.14
Hola to you, Ms. Davis!
Output for 5.2.2, 5.2.12, 5.2.14, 5.4.12, 5.6.8, 5.6.14, 5.6.21, 7.0.13
Hello to you, Ms. Davis!
Output for 5.3.22, 5.3.26, 5.4.0, 5.4.25, 5.5.38, 5.6.10, 7.0.1, 7.0.7, 7.0.9
Howdy to you, Ms. Davis!
Output for 5.3.8, 5.3.23, 5.4.16, 5.4.43, 5.5.13, 7.0.6
Hello to you, Mrs. Davis!
Output for 5.2.1, 5.4.20, 5.4.29, 5.4.45, 5.5.22, 5.5.29, 5.5.33, 5.6.5, 5.6.27, 5.6.29
Hello to you, Mr. Smith!
Output for 5.3.2, 5.3.9, 5.3.15, 5.4.3, 5.4.14, 5.4.17, 5.5.37, 5.6.23
Hola to you, Ms. Smith!
Output for 5.0.2, 5.1.0, 5.3.29, 5.4.44, 5.5.30, 5.6.16
Hola to you, Mrs. Williams!
Output for 5.2.7, 5.4.31, 5.5.8, 5.5.12, 5.5.14, 5.5.18, 5.6.9
Hello to you, Ms. Williams!
Output for 5.3.4, 5.3.18, 5.4.15, 5.4.39, 5.5.0 - 5.5.1, 5.5.6, 5.5.25
Howdy to you, Mrs. Williams!
Output for 5.2.13, 5.4.23
Howdy to you, Mr. Davis!
Output for 4.4.2 - 4.4.9
Parse error: syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /in/mXbIs on line 9
Process exited with code 255.
Output for 4.3.0 - 4.3.1, 4.3.5 - 4.3.11, 4.4.0 - 4.4.1
Parse error: parse error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /in/mXbIs on line 9
Process exited with code 255.
Output for 4.3.2 - 4.3.4
Parse error: parse error, expecting `T_OLD_FUNCTION' or `T_FUNCTION' or `T_VAR' or `'}'' in /in/mXbIs on line 9
Process exited with code 255.

preferences:
79.28 ms | 445 KiB | 5 Q