From 6debaf93bcdb965d59b5aa9f9ceb9f3b9fc6ba55 Mon Sep 17 00:00:00 2001 From: Yutaka Kurosaki <> Date: Sat, 9 May 2026 10:51:48 +0900 Subject: [PATCH] Fix regex delimiter in plan Task 5 Task 4 implementer discovered that # delimiter conflicts with literal # inside [/?#] and [&#] character classes (PHP PCRE terminates the regex early). Same patterns repeat in Task 5; pre-update so a re-execution does not hit the same bug. Vimeo regex in Task 6 is unaffected (no literal # in pattern body). Co-Authored-By: Claude Opus 4.7 (1M context) --- docs/superpowers/plans/2026-05-09-media-embed.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/superpowers/plans/2026-05-09-media-embed.md b/docs/superpowers/plans/2026-05-09-media-embed.md index 923bf1a..1326b5d 100644 --- a/docs/superpowers/plans/2026-05-09-media-embed.md +++ b/docs/superpowers/plans/2026-05-09-media-embed.md @@ -522,10 +522,10 @@ In `MediaUrlResolver.php`, modify `detectYouTube()` and add helper methods: private function detectYouTube(string $url): ?string { $patterns = [ - '#^https?://youtu\.be/([A-Za-z0-9_-]{11})(?:[/?#]|$)#', - '#^https?://(?:www\.|m\.)?youtube\.com/watch\?(?:[^#]*&)?v=([A-Za-z0-9_-]{11})(?:[&#]|$)#', - '#^https?://(?:www\.|m\.)?youtube\.com/shorts/([A-Za-z0-9_-]{11})(?:[/?#]|$)#', - '#^https?://(?:www\.|m\.)?youtube\.com/embed/([A-Za-z0-9_-]{11})(?:[/?#]|$)#', + '~^https?://youtu\.be/([A-Za-z0-9_-]{11})(?:[/?#]|$)~', + '~^https?://(?:www\.|m\.)?youtube\.com/watch\?(?:[^#]*&)?v=([A-Za-z0-9_-]{11})(?:[&#]|$)~', + '~^https?://(?:www\.|m\.)?youtube\.com/shorts/([A-Za-z0-9_-]{11})(?:[/?#]|$)~', + '~^https?://(?:www\.|m\.)?youtube\.com/embed/([A-Za-z0-9_-]{11})(?:[/?#]|$)~', ]; $videoId = null; foreach ($patterns as $p) {