Using a DOM parser
HTML is not a regular language and cannot be correctly parsed using a regular expression. Use a DOM parser instead. Here's how it can be done using PHP's DOMDocument class:
$html = <<<HTML
<textarea width="500" >web scripting language of choice.</textarea>
HTML;
$dom = new DOMDocument;
$dom->loadHTML($html);
foreach ($dom->getElementsByTagName('textarea') as $tag) {
var_dump($tag->nodeValue);
}
Using a regex
If you are absolutely sure that the format of the markup will be consistent, a regex might work, too. To fix your regex, remove the extra spaces from the pattern:
preg_match("/[>](.*?)[<]/", $html, $matches);
var_dump($matches[1]);
Output:
string(33) "web scripting language of choice."