Ваш шаблон застревает на kai_noack
, потому что в вашем классе персонажей нет /
: [A-Za-z0-9_-]
.
Если я не пойму вопрос неправильно, вам понадобятся только идентификатор скрипки и номер версии(и игнорируйте все перед именем пользователя).
Демонстрация паттернов
Код: ( Демонстрация )
$types = array(
'jsfiddle' => array(
array(
'https?:\/\/(?:www)?\.?jsfiddle\.net[\w\/-]*\/([a-z\d]{8}(?:\/\d+)?)\/?',
'<div class="jsfiddle-embed-wrap"><iframe class="iframe-jsfiddle" src="//jsfiddle.net/$1/embedded/result,js,html,css/"></iframe></div>'
),
),
// youtube, replit, ...
);
$text = 'https://jsfiddle.net/kai_noack/h1jf34za/11/';
foreach($types as $t => $ra) {
// $t is youtube, jsfiddle, replit
// $ra is array with replacements $ra[0] regex, $ra[1] embed code
foreach($ra as $r) {
$text = preg_replace('/<a[^>]+>'.$r[0].'<\/a>/i', $r[1], $text);
$text = preg_replace('/(?<![\'"=])'.$r[0].'/i', $r[1], $text);
}
}
echo $text;
Вывод:
<div class="jsfiddle-embed-wrap"><iframe class="iframe-jsfiddle" src="//jsfiddle.net/h1jf34za/11/embedded/result,js,html,css/"></iframe></div>
У ваших шаблонов уже есть модификаторы i
, поэтому [A-Z]
не требуется.