Как бы я удалил все специальные символы в начале слова?

У меня есть такой персидский текст:

$str = 'این یک متن تست است. اینجا ایران است';

Также это то, что я хочу удалить (если это было в первом слове, в основном определение первого — после пробела): ای,

Итак, я хочу этот вывод:

$newstr: 'ن یک متن تست است. نجا ران است';

То, что я пробовал, это только для первого слова:

echo $newstr = preg_replace('/^ای\u/', '', $str);

// output: ن یک متن تست است. اینجا ایران است

Во всяком случае, как я могу реализовать это для первых слов?

(Следует отметить ای то же самое с ایـ С семантической точки зрения, я знаю, есть очевидная разница)


Редактировать: Вот мой вопрос как английская версия:

$str = 'it is a test, i like that';

Теперь я хочу это 🙁 удаляя все i в первых словах каждого)

$newstr = 't s a test, like that';

Как я могу это сделать?

0

Решение

Мне немного сложно ответить на этот вопрос, но есть пара частей вашего регулярного выражения, которые могут быть тем, что вас удерживает:

  • ^анкеры совпадение с началом строки
  • \u — это синтаксис, не поддерживаемый PCRE, вы, вероятно, хотели поставить u после разделителя /u включить обработку utf-8.

Внесение этих изменений дает:

echo preg_replace('/ای/u', '', $str);

какие выводы:

ن یک متن تست است. نجا ران است

Чтобы оно совпадало только в начале слова, используйте граница слова \b

echo preg_replace('/\bای/u', '', $str);

рабочая демо

0

Другие решения

Похоже, вам нужно что-то вроде этого \x{627}\x{6CC}\x{640}?

0

По вопросам рекламы [email protected]