Смешанные строки иврита и английского и поймать первые 10 символов до последнего слова

У меня смешанная строка на иврите и английском, и я хочу поймать первые 10 символов, не пропуская ни слова в середине. например:

    >שלום is peace not a war

Я использую:

/^[a-zA-Z\-\u0590-\u05ff ]{1,10}\b/i

мой результат: שלום is [0-7]

без флага b результат: שלום is pe [0-9]

Требуемый результат: שלום is peace [0-12]

Спасибо

1 ответ

Решение

Ты можешь использовать \p{Hebrew} свойство, соответствующее символам иврита

$re = '/^[a-zA-Z\p{Hebrew} ]{10,}?\b/mu'; 
$str = "שלום is peace not a war"; 

preg_match_all($re, $str, $matches);

print_r($matches[0]);

RegEx Demo

Другие вопросы по тегам