3v4l.org

run code in 300+ PHP versions simultaneously
<?php $test = ["О'Генри", "Анон", "Анна-Мария", "О'Генри'и"]; /*Любой символ, кроме апострофа, затем апостроф (который может быть и не быть), затем условие - если апостроф существует, то применить регулярное выражение*/ $regexp = "/^[^']{1,}'?(?(?='{1,}) [а-яё]{1,}'{1}[а-яё]{1,})[^']{1,}$/ui"; $result = []; foreach ($test as $value) { echo "Слово $value\n"; preg_match($regexp, $value, $result); var_dump($result); echo "\n\n"; }
Output for 8.1.0 - 8.1.28, 8.2.0 - 8.2.19, 8.3.0 - 8.3.7
Слово О'Генри array(1) { [0]=> string(13) "О'Генри" } Слово Анон array(1) { [0]=> string(8) "Анон" } Слово Анна-Мария array(1) { [0]=> string(19) "Анна-Мария" } Слово О'Генри'и array(0) { }

preferences:
92.07 ms | 402 KiB | 62 Q