wordpress - Undefined Offset / PHP error -


i'm using wordpress plugin contains function, plugin developers not being particularly quick respond.

it supposed video id youtube url, instead i'm getting "undefined offset: 1" error. there coding error i'm missing?

here function:

function youtube_id_from_url($url) {     $pattern =         '%^# match youtube url         (?:https?://)?  # optional scheme. either http or https         (?:www\.)?      # optional www subdomain         (?:             # group host alternatives           youtu\.be/    # either youtu.be,         | youtube\.com  # or youtube.com           (?:           # group path alternatives             /embed/     # either /embed/           | /v/         # or /v/           | /watch\?v=  # or /watch\?v=           )             # end path alternatives.         )               # end host alternatives.         ([\w-]{10,12})  # allow 10-12 11 char youtube id.         $%x'         ;     $result = preg_match($pattern, $url, $matches);     if (false !== $result) {         return $matches[1];     }     return false; } 

i tried doing print_r see array $matches looks like, , seemed empty array, tried echoing $result , returned 0, mean preg_match() isn't finding match, correct? if so, can figure out what's wrong $pattern make return 0.

update: apparently there's other function taking url , making link out of , saving $url variable. if echo $url variable prints <a href="youtube url">youtube url</a>.

so explains error how can modify regex accommodate html markup?

preg_match return false if error occurs, , in case you're wanting know if there either matches or no matches. should able switch line:

if (false !== $result) { 

to

if ( isset( $matches[1] ) ) { 

or

if ( $result && isset( $matches[1] ) ) { 

as phil points out, need is:

if( $result ) { 

full revised function complete phil's modification regex:

function youtube_id_from_url($url) {     $pattern =         '%^# match youtube url         (?:https?://)?  # optional scheme. either http or https         (?:www\.)?      # optional www subdomain         (?:             # group host alternatives           youtu\.be/    # either youtu.be,         | youtube\.com  # or youtube.com           (?:           # group path alternatives             /embed/     # either /embed/           | /v/         # or /v/           | /watch\?v=  # or /watch\?v=           )             # end path alternatives.         )               # end host alternatives.         ([\w-]{10,12})  # allow 10-12 11 char youtube id.         &?.*$%x'         ;     $result = preg_match($pattern, $url, $matches);     if ($result) {         return $matches[1];     }     return false; } 

Comments

Popular posts from this blog

Is there a better way to structure post methods in Class Based Views -

performance - Why is XCHG reg, reg a 3 micro-op instruction on modern Intel architectures? -

jquery - Responsive Navbar with Sub Navbar -