הregex שאתה משתמש בו לא טוב.
הוא בודק התאמה רק של תו אחד, וברגע שיש לך יותר הוא מחזיר false
ואל תשכח שחוץ מתווים עבריים, יש לך גם רווחים \s
וגם פסיקים: ,
וגם נקודה: .
וכל אלה גם צריכים להתבתא בregex.
קוד:
<?php
$pattern = "/^[א-ת\s,.]+$/";
$string = "שלום עולם";
print_r(preg_match($pattern, $string));
?>