<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.secondlife.com/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Crooked+Shim</id>
	<title>Second Life Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.secondlife.com/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Crooked+Shim"/>
	<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/wiki/Special:Contributions/Crooked_Shim"/>
	<updated>2026-04-06T17:29:06Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=User:Crooked_Shim&amp;diff=905882</id>
		<title>User:Crooked Shim</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=User:Crooked_Shim&amp;diff=905882"/>
		<updated>2010-05-07T02:48:40Z</updated>

		<summary type="html">&lt;p&gt;Crooked Shim: /* Key2Birthday */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{| cellpadding=&amp;quot;10&amp;quot; cellspacing=&amp;quot;8&amp;quot; style=&amp;quot;width: 100%; background-color: #C0C0C0; border: 1px solid #1234aa; vertical-align: top;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 68%; background-color: #FFFFFF; border: 1px solid #8888aa; border-right-width:4px; border-bottom-width:4px; vertical-align: top;&amp;quot; rowspan=&amp;quot;3&amp;quot; |&lt;br /&gt;
=== Useful PHP Functions ===&lt;br /&gt;
These may break at any time, depends on if LL changes SL search too much.&lt;br /&gt;
&lt;br /&gt;
====Name2Key====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
function get_key($user_name)&lt;br /&gt;
{&lt;br /&gt;
	$url = sprintf(&#039;http://search.secondlife.com/web/search/?q=%s&#039;, urlencode($user_name));&lt;br /&gt;
	$ch = curl_init();&lt;br /&gt;
	curl_setopt_array($ch, array(CURLOPT_URL=&amp;gt;$url, CURLOPT_RETURNTRANSFER=&amp;gt;true, CURLOPT_CONNECTTIMEOUT=&amp;gt;5, CURLOPT_USERAGENT=&amp;gt;&amp;quot;Name2Key&amp;quot;));&lt;br /&gt;
	$output = curl_exec($ch);&lt;br /&gt;
	curl_close($ch);&lt;br /&gt;
	$user_name = strtoupper($user_name);&lt;br /&gt;
	preg_match_all(&#039;%&amp;lt;a href=&amp;quot;http://world\.secondlife\.com/resident/([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})&amp;quot;&amp;gt;(?:&amp;lt;b&amp;gt;)?(.+?)(?:&amp;lt;/b&amp;gt;)?&amp;lt;/a&amp;gt;%&#039;, $output, $matches, PREG_SET_ORDER);&lt;br /&gt;
	foreach ($matches as $val)&lt;br /&gt;
	{&lt;br /&gt;
		if (strtoupper($val[2]) == $user_name)&lt;br /&gt;
		{&lt;br /&gt;
			return $val[1];&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	return &#039;not_found&#039;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Key2Name====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
function get_name($user_key)&lt;br /&gt;
{&lt;br /&gt;
	$url = sprintf(&#039;http://world.secondlife.com/resident/%s&#039;, urlencode($user_key));&lt;br /&gt;
	$ch = curl_init();&lt;br /&gt;
	curl_setopt_array($ch, array(CURLOPT_URL=&amp;gt;$url, CURLOPT_RETURNTRANSFER=&amp;gt;true, CURLOPT_CONNECTTIMEOUT=&amp;gt;5));&lt;br /&gt;
	$output = curl_exec($ch);&lt;br /&gt;
	curl_close($ch);&lt;br /&gt;
	preg_match(&#039;%&amp;lt;title&amp;gt;(.+?)&amp;lt;/title&amp;gt;%&#039;, $output, $matches);&lt;br /&gt;
	if (!empty($matches[1])) return $matches[1];&lt;br /&gt;
	else return &#039;not_found&#039;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Key2Birthday====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
function get_birthday($user_key)&lt;br /&gt;
{&lt;br /&gt;
	$url = sprintf(&#039;http://world.secondlife.com/resident/%s&#039;, urlencode($user_key));&lt;br /&gt;
	$ch = curl_init();&lt;br /&gt;
	curl_setopt_array($ch, array(CURLOPT_URL=&amp;gt;$url, CURLOPT_RETURNTRANSFER=&amp;gt;true, CURLOPT_CONNECTTIMEOUT=&amp;gt;5, CURLOPT_USERAGENT=&amp;gt;&amp;quot;Key2DOB&amp;quot;));&lt;br /&gt;
	$output = curl_exec($ch);&lt;br /&gt;
	curl_close($ch);&lt;br /&gt;
	&lt;br /&gt;
	if (strpos($output, &#039;AccessDenied&#039;) !== false) return &#039;not_found&#039;;&lt;br /&gt;
	&lt;br /&gt;
	if (preg_match(&#039;%&amp;lt;span class=&amp;quot;syscat&amp;quot;&amp;gt;Resident Since:&amp;lt;/span&amp;gt;\s&amp;lt;!--googleon: index--&amp;gt;\s(\d+?)-(\d+?)-(\d+?)\s&amp;lt;!--googleoff: index--&amp;gt;%&#039;, $output, $matches)) return array_slice($matches, 1);&lt;br /&gt;
	else return &#039;not_found&#039;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Crooked Shim</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=User:Crooked_Shim&amp;diff=905872</id>
		<title>User:Crooked Shim</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=User:Crooked_Shim&amp;diff=905872"/>
		<updated>2010-05-07T02:48:20Z</updated>

		<summary type="html">&lt;p&gt;Crooked Shim: /* Name2Key */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{| cellpadding=&amp;quot;10&amp;quot; cellspacing=&amp;quot;8&amp;quot; style=&amp;quot;width: 100%; background-color: #C0C0C0; border: 1px solid #1234aa; vertical-align: top;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 68%; background-color: #FFFFFF; border: 1px solid #8888aa; border-right-width:4px; border-bottom-width:4px; vertical-align: top;&amp;quot; rowspan=&amp;quot;3&amp;quot; |&lt;br /&gt;
=== Useful PHP Functions ===&lt;br /&gt;
These may break at any time, depends on if LL changes SL search too much.&lt;br /&gt;
&lt;br /&gt;
====Name2Key====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
function get_key($user_name)&lt;br /&gt;
{&lt;br /&gt;
	$url = sprintf(&#039;http://search.secondlife.com/web/search/?q=%s&#039;, urlencode($user_name));&lt;br /&gt;
	$ch = curl_init();&lt;br /&gt;
	curl_setopt_array($ch, array(CURLOPT_URL=&amp;gt;$url, CURLOPT_RETURNTRANSFER=&amp;gt;true, CURLOPT_CONNECTTIMEOUT=&amp;gt;5, CURLOPT_USERAGENT=&amp;gt;&amp;quot;Name2Key&amp;quot;));&lt;br /&gt;
	$output = curl_exec($ch);&lt;br /&gt;
	curl_close($ch);&lt;br /&gt;
	$user_name = strtoupper($user_name);&lt;br /&gt;
	preg_match_all(&#039;%&amp;lt;a href=&amp;quot;http://world\.secondlife\.com/resident/([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})&amp;quot;&amp;gt;(?:&amp;lt;b&amp;gt;)?(.+?)(?:&amp;lt;/b&amp;gt;)?&amp;lt;/a&amp;gt;%&#039;, $output, $matches, PREG_SET_ORDER);&lt;br /&gt;
	foreach ($matches as $val)&lt;br /&gt;
	{&lt;br /&gt;
		if (strtoupper($val[2]) == $user_name)&lt;br /&gt;
		{&lt;br /&gt;
			return $val[1];&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	return &#039;not_found&#039;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Key2Name====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
function get_name($user_key)&lt;br /&gt;
{&lt;br /&gt;
	$url = sprintf(&#039;http://world.secondlife.com/resident/%s&#039;, urlencode($user_key));&lt;br /&gt;
	$ch = curl_init();&lt;br /&gt;
	curl_setopt_array($ch, array(CURLOPT_URL=&amp;gt;$url, CURLOPT_RETURNTRANSFER=&amp;gt;true, CURLOPT_CONNECTTIMEOUT=&amp;gt;5));&lt;br /&gt;
	$output = curl_exec($ch);&lt;br /&gt;
	curl_close($ch);&lt;br /&gt;
	preg_match(&#039;%&amp;lt;title&amp;gt;(.+?)&amp;lt;/title&amp;gt;%&#039;, $output, $matches);&lt;br /&gt;
	if (!empty($matches[1])) return $matches[1];&lt;br /&gt;
	else return &#039;not_found&#039;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Key2Birthday====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
function get_birthday($user_key)&lt;br /&gt;
{&lt;br /&gt;
	$url = sprintf(&#039;http://world.secondlife.com/resident/%s&#039;, urlencode($user_key));&lt;br /&gt;
	$ch = curl_init();&lt;br /&gt;
	curl_setopt_array($ch, array(CURLOPT_URL=&amp;gt;$url, CURLOPT_RETURNTRANSFER=&amp;gt;true, CURLOPT_CONNECTTIMEOUT=&amp;gt;5, CURLOPT_USERAGENT=&amp;gt;&amp;quot;Madgeek_K2DOB&amp;quot;));&lt;br /&gt;
	$output = curl_exec($ch);&lt;br /&gt;
	curl_close($ch);&lt;br /&gt;
	&lt;br /&gt;
	if (strpos($output, &#039;AccessDenied&#039;) !== false) return &#039;not_found&#039;;&lt;br /&gt;
	&lt;br /&gt;
	if (preg_match(&#039;%&amp;lt;span class=&amp;quot;syscat&amp;quot;&amp;gt;Resident Since:&amp;lt;/span&amp;gt;\s&amp;lt;!--googleon: index--&amp;gt;\s(\d+?)-(\d+?)-(\d+?)\s&amp;lt;!--googleoff: index--&amp;gt;%&#039;, $output, $matches)) return array_slice($matches, 1);&lt;br /&gt;
	else return &#039;not_found&#039;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Crooked Shim</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=User_talk:Crooked_Shim&amp;diff=905862</id>
		<title>User talk:Crooked Shim</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=User_talk:Crooked_Shim&amp;diff=905862"/>
		<updated>2010-05-07T02:47:21Z</updated>

		<summary type="html">&lt;p&gt;Crooked Shim: Blanked the page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Crooked Shim</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=User_talk:Crooked_Shim&amp;diff=905852</id>
		<title>User talk:Crooked Shim</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=User_talk:Crooked_Shim&amp;diff=905852"/>
		<updated>2010-05-07T02:46:33Z</updated>

		<summary type="html">&lt;p&gt;Crooked Shim: moved User talk:Crooked Shim to User:Crooked Shim:&amp;amp;#32;Oops&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[User:Crooked Shim]]&lt;/div&gt;</summary>
		<author><name>Crooked Shim</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=User:Crooked_Shim&amp;diff=905842</id>
		<title>User:Crooked Shim</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=User:Crooked_Shim&amp;diff=905842"/>
		<updated>2010-05-07T02:46:33Z</updated>

		<summary type="html">&lt;p&gt;Crooked Shim: moved User talk:Crooked Shim to User:Crooked Shim:&amp;amp;#32;Oops&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{| cellpadding=&amp;quot;10&amp;quot; cellspacing=&amp;quot;8&amp;quot; style=&amp;quot;width: 100%; background-color: #C0C0C0; border: 1px solid #1234aa; vertical-align: top;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 68%; background-color: #FFFFFF; border: 1px solid #8888aa; border-right-width:4px; border-bottom-width:4px; vertical-align: top;&amp;quot; rowspan=&amp;quot;3&amp;quot; |&lt;br /&gt;
=== Useful PHP Functions ===&lt;br /&gt;
These may break at any time, depends on if LL changes SL search too much.&lt;br /&gt;
&lt;br /&gt;
====Name2Key====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
function get_key($user_name)&lt;br /&gt;
{&lt;br /&gt;
	$url = sprintf(&#039;http://search.secondlife.com/web/search/?q=%s&#039;, urlencode($user_name));&lt;br /&gt;
	$ch = curl_init();&lt;br /&gt;
	curl_setopt_array($ch, array(CURLOPT_URL=&amp;gt;$url, CURLOPT_RETURNTRANSFER=&amp;gt;true, CURLOPT_CONNECTTIMEOUT=&amp;gt;5, CURLOPT_USERAGENT=&amp;gt;&amp;quot;Madgeek_N2K&amp;quot;));&lt;br /&gt;
	$output = curl_exec($ch);&lt;br /&gt;
	curl_close($ch);&lt;br /&gt;
	$user_name = strtoupper($user_name);&lt;br /&gt;
	preg_match_all(&#039;%&amp;lt;a href=&amp;quot;http://world\.secondlife\.com/resident/([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})&amp;quot;&amp;gt;(?:&amp;lt;b&amp;gt;)?(.+?)(?:&amp;lt;/b&amp;gt;)?&amp;lt;/a&amp;gt;%&#039;, $output, $matches, PREG_SET_ORDER);&lt;br /&gt;
	foreach ($matches as $val)&lt;br /&gt;
	{&lt;br /&gt;
		if (strtoupper($val[2]) == $user_name)&lt;br /&gt;
		{&lt;br /&gt;
			return $val[1];&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	return &#039;not_found&#039;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Key2Name====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
function get_name($user_key)&lt;br /&gt;
{&lt;br /&gt;
	$url = sprintf(&#039;http://world.secondlife.com/resident/%s&#039;, urlencode($user_key));&lt;br /&gt;
	$ch = curl_init();&lt;br /&gt;
	curl_setopt_array($ch, array(CURLOPT_URL=&amp;gt;$url, CURLOPT_RETURNTRANSFER=&amp;gt;true, CURLOPT_CONNECTTIMEOUT=&amp;gt;5));&lt;br /&gt;
	$output = curl_exec($ch);&lt;br /&gt;
	curl_close($ch);&lt;br /&gt;
	preg_match(&#039;%&amp;lt;title&amp;gt;(.+?)&amp;lt;/title&amp;gt;%&#039;, $output, $matches);&lt;br /&gt;
	if (!empty($matches[1])) return $matches[1];&lt;br /&gt;
	else return &#039;not_found&#039;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Key2Birthday====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
function get_birthday($user_key)&lt;br /&gt;
{&lt;br /&gt;
	$url = sprintf(&#039;http://world.secondlife.com/resident/%s&#039;, urlencode($user_key));&lt;br /&gt;
	$ch = curl_init();&lt;br /&gt;
	curl_setopt_array($ch, array(CURLOPT_URL=&amp;gt;$url, CURLOPT_RETURNTRANSFER=&amp;gt;true, CURLOPT_CONNECTTIMEOUT=&amp;gt;5, CURLOPT_USERAGENT=&amp;gt;&amp;quot;Madgeek_K2DOB&amp;quot;));&lt;br /&gt;
	$output = curl_exec($ch);&lt;br /&gt;
	curl_close($ch);&lt;br /&gt;
	&lt;br /&gt;
	if (strpos($output, &#039;AccessDenied&#039;) !== false) return &#039;not_found&#039;;&lt;br /&gt;
	&lt;br /&gt;
	if (preg_match(&#039;%&amp;lt;span class=&amp;quot;syscat&amp;quot;&amp;gt;Resident Since:&amp;lt;/span&amp;gt;\s&amp;lt;!--googleon: index--&amp;gt;\s(\d+?)-(\d+?)-(\d+?)\s&amp;lt;!--googleoff: index--&amp;gt;%&#039;, $output, $matches)) return array_slice($matches, 1);&lt;br /&gt;
	else return &#039;not_found&#039;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Crooked Shim</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=User:Crooked_Shim&amp;diff=905832</id>
		<title>User:Crooked Shim</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=User:Crooked_Shim&amp;diff=905832"/>
		<updated>2010-05-07T02:45:25Z</updated>

		<summary type="html">&lt;p&gt;Crooked Shim: Created page with &amp;#039;__NOTOC__ {| cellpadding=&amp;quot;10&amp;quot; cellspacing=&amp;quot;8&amp;quot; style=&amp;quot;width: 100%; background-color: #C0C0C0; border: 1px solid #1234aa; vertical-align: top;&amp;quot;  |- | style=&amp;quot;width: 68%; background-...&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{| cellpadding=&amp;quot;10&amp;quot; cellspacing=&amp;quot;8&amp;quot; style=&amp;quot;width: 100%; background-color: #C0C0C0; border: 1px solid #1234aa; vertical-align: top;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 68%; background-color: #FFFFFF; border: 1px solid #8888aa; border-right-width:4px; border-bottom-width:4px; vertical-align: top;&amp;quot; rowspan=&amp;quot;3&amp;quot; |&lt;br /&gt;
=== Useful PHP Functions ===&lt;br /&gt;
These may break at any time, depends on if LL changes SL search too much.&lt;br /&gt;
&lt;br /&gt;
====Name2Key====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
function get_key($user_name)&lt;br /&gt;
{&lt;br /&gt;
	$url = sprintf(&#039;http://search.secondlife.com/web/search/?q=%s&#039;, urlencode($user_name));&lt;br /&gt;
	$ch = curl_init();&lt;br /&gt;
	curl_setopt_array($ch, array(CURLOPT_URL=&amp;gt;$url, CURLOPT_RETURNTRANSFER=&amp;gt;true, CURLOPT_CONNECTTIMEOUT=&amp;gt;5, CURLOPT_USERAGENT=&amp;gt;&amp;quot;Madgeek_N2K&amp;quot;));&lt;br /&gt;
	$output = curl_exec($ch);&lt;br /&gt;
	curl_close($ch);&lt;br /&gt;
	$user_name = strtoupper($user_name);&lt;br /&gt;
	preg_match_all(&#039;%&amp;lt;a href=&amp;quot;http://world\.secondlife\.com/resident/([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})&amp;quot;&amp;gt;(?:&amp;lt;b&amp;gt;)?(.+?)(?:&amp;lt;/b&amp;gt;)?&amp;lt;/a&amp;gt;%&#039;, $output, $matches, PREG_SET_ORDER);&lt;br /&gt;
	foreach ($matches as $val)&lt;br /&gt;
	{&lt;br /&gt;
		if (strtoupper($val[2]) == $user_name)&lt;br /&gt;
		{&lt;br /&gt;
			return $val[1];&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	return &#039;not_found&#039;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Key2Name====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
function get_name($user_key)&lt;br /&gt;
{&lt;br /&gt;
	$url = sprintf(&#039;http://world.secondlife.com/resident/%s&#039;, urlencode($user_key));&lt;br /&gt;
	$ch = curl_init();&lt;br /&gt;
	curl_setopt_array($ch, array(CURLOPT_URL=&amp;gt;$url, CURLOPT_RETURNTRANSFER=&amp;gt;true, CURLOPT_CONNECTTIMEOUT=&amp;gt;5));&lt;br /&gt;
	$output = curl_exec($ch);&lt;br /&gt;
	curl_close($ch);&lt;br /&gt;
	preg_match(&#039;%&amp;lt;title&amp;gt;(.+?)&amp;lt;/title&amp;gt;%&#039;, $output, $matches);&lt;br /&gt;
	if (!empty($matches[1])) return $matches[1];&lt;br /&gt;
	else return &#039;not_found&#039;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Key2Birthday====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
function get_birthday($user_key)&lt;br /&gt;
{&lt;br /&gt;
	$url = sprintf(&#039;http://world.secondlife.com/resident/%s&#039;, urlencode($user_key));&lt;br /&gt;
	$ch = curl_init();&lt;br /&gt;
	curl_setopt_array($ch, array(CURLOPT_URL=&amp;gt;$url, CURLOPT_RETURNTRANSFER=&amp;gt;true, CURLOPT_CONNECTTIMEOUT=&amp;gt;5, CURLOPT_USERAGENT=&amp;gt;&amp;quot;Madgeek_K2DOB&amp;quot;));&lt;br /&gt;
	$output = curl_exec($ch);&lt;br /&gt;
	curl_close($ch);&lt;br /&gt;
	&lt;br /&gt;
	if (strpos($output, &#039;AccessDenied&#039;) !== false) return &#039;not_found&#039;;&lt;br /&gt;
	&lt;br /&gt;
	if (preg_match(&#039;%&amp;lt;span class=&amp;quot;syscat&amp;quot;&amp;gt;Resident Since:&amp;lt;/span&amp;gt;\s&amp;lt;!--googleon: index--&amp;gt;\s(\d+?)-(\d+?)-(\d+?)\s&amp;lt;!--googleoff: index--&amp;gt;%&#039;, $output, $matches)) return array_slice($matches, 1);&lt;br /&gt;
	else return &#039;not_found&#039;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Crooked Shim</name></author>
	</entry>
</feed>