I think it'is the best choice.
$keywords = preg_split('/\s*,\s*/', "hypertext language, programming", -1, PREG_SPLIT_NO_EMPTY);
First of all "Regex is much slower" is wrong, because it's always depends on the pattern. In this case preg_split() is faster.
Second preg_split is more readable and as practice shows more profitable option. Keep it simple.
$b = "hypertext language, programming";
$time = microtime(1);
for ($i=1; $i<100000; $i++)
$a = array_map('trim', explode(',', $b)); // Split by comma
printf("array_map(trim), explode = %.2f\n", microtime(1)-$time);
$time = microtime(1);
for ($i=1; $i<100000; $i++)
$a = preg_split('/\s*,\s*/', $b); // Split by comma
printf("Preg split = %.2f\n", microtime(1)-$time);
array_map(trim), explode = 0.32
Preg split = 0.22