Я запустил ваш код в консоли, просто изменив имя переменной в последнем фрагменте так, чтобы:
php > $resource = "THIS IS ABOUT WWW.JONAKCOMPUTERS.COM, HTTP://HIGHLOW.COM, AND TESTINGSERVER1.COM"
php > $pattern = '#(www\.|https?:\/\/){1}[a-zA-Z0-9]{2,}\.[a-zA-Z0-9]{2,}(\S*)#i';
php > preg_match_all($pattern, $resource, $matches, PREG_PATTERN_ORDER);
php > var_dump($matches);
array(3) {
[0]=>
array(2) {
[0]=>
string(23) "WWW.JONAKCOMPUTERS.COM,"
[1]=>
string(19) "HTTP://HIGHLOW.COM,"
}
[1]=>
array(2) {
[0]=>
string(4) "WWW."
[1]=>
string(7) "HTTP://"
}
[2]=>
array(2) {
[0]=>
string(1) ","
[1]=>
string(1) ","
}
}
То, что вы видите в возвращении preg_match, - это многомерный массив со следующим:
0: полные совпадения
1: SubPattern 1 соответствует
2: совпадения SubPattern 2
Единственное исправление, которое я вижу, это то, что вам нужно немного настроить RegExp, чтобы учесть отсутствие ww или http. так что просто используйте это для шаблона:
$pattern = '#(www\.|https?:\/\/)?[a-zA-Z0-9]{2,}\.[a-zA-Z0-9]{2,}(\S*)#i';
и ваши $ совпадения теперь должны содержать все 3.