$re = '/(https?:)?\/\/(www\.)?((zi\.mu)|(zi\.ma)|(yhoo\.it)|(yfrog\.com)|(yep\.it)|(y\.ahoo\.it)|(xurl\.es)|(xrl\.us)|(xrl\.in)|(wp\.me)|(url\.ie)|(url\.co\.uk)|(url\.az)|(ur1\.ca)|(u\.nu)|(twurl\.nl)|(twurl\.cc)|(tr\.im)|(to\.ly)|(tnij\.org)|(tinyurl\.com)|(tinylink\.in)|(tiny\.pl)|(tiny\.ly)|(tiny\.cc)|(tcrn\.ch)|(ta\.gd)|(t\.co)|(t\.cn)|(su\.pr)|(sp2\.ro)|(snurl\.com)|(snipurl\.com)|(snipr\.com)|(shrt\.st)|(shorturl\.com)|(short\.ie)|(shorl\.com)|(shar\.es)|(sameurl\.com)|(safe\.mn)|(post\.ly)|(ping\.fm)|(ow\.ly)|(om\.ly)|(nyti\.ms)|(nsfw\.in)|(moby\.to)|(migre\.me)|(lnkd\.in)|(linkbun\.ch)|(linkbee\.com)|(liip\.to)|(krunchd\.com)|(korta\.nu)|(j\.mp)|(is\.gd)|(hurl\.me)|(huff\.to)|(goo\.gl)|(fwd4\.me)|(fff\.to)|(ff\.im)|(fb\.me)|(fav\.me)|(eepurl\.com)|(doiop\.com)|(dlvr\.it)|(disq\.us)|(digg\.com)|(digbig\.com)|(decenturl\.com)|(cutt\.us)|(cot\.ag)|(cli\.gs)|(clck\.ru)|(cl\.ly)|(chilp\.it)|(budurl\.com)|(bit\.ly)|(binged\.it)|(bacn\.me)|(arst\.ch)|(alturl\.com)|(afx\.cc)|(adjix\.com)|(adf\.ly)|(4sq\.com)|(3\.ly)|(0rz\.tw)|(we\.tl)|(ouo\.io)|(bfy\.tw)|(bit\.do))\/[a-z0-9]+ /';
$str = 'https://zi.mu/dfd';
preg_match($re, $str, $matches, PREG_OFFSET_CAPTURE, 0);
// Print the entire match result
var_dump($matches);
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for PHP, please visit: http://php.net/manual/en/ref.pcre.php