3v4l.org

run code in 300+ PHP versions simultaneously
<?php $re = '/(?:(?:;|^)\h*(?<name>[^;<>]+)\h+<(?<email>[^<>\s@;]+@[^\s@<>;]+)>|(?<email>[^<>\s@;]+@[^\s@<>;]+))/J'; $str = 'jeff <jeff@store.com>; john <john@bbaft.com>; joe@company.com; jj@abc.info; jamie <jam@sub.abc.com>'; preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0); foreach ($matches as $match) { echo sprintf("Name: %s\nEmail: %s\n\n", $match["name"], $match["email"]); }
Output for 7.3.0 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.33, 8.2.0 - 8.2.29, 8.3.0 - 8.3.27, 8.4.1 - 8.4.14
Name: jeff Email: jeff@store.com Name: john Email: john@bbaft.com Name: Email: joe@company.com Name: Email: jj@abc.info Name: jamie Email: jam@sub.abc.com

preferences:
557.27 ms | 407 KiB | 5 Q