У меня есть такой персидский текст:
$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';
Как я могу это сделать?
Мне немного сложно ответить на этот вопрос, но есть пара частей вашего регулярного выражения, которые могут быть тем, что вас удерживает:
^
— анкеры совпадение с началом строки\u
— это синтаксис, не поддерживаемый PCRE, вы, вероятно, хотели поставить u после разделителя /u
включить обработку utf-8.Внесение этих изменений дает:
echo preg_replace('/ای/u', '', $str);
какие выводы:
ن یک متن تست است. نجا ران است
Чтобы оно совпадало только в начале слова, используйте граница слова \b
echo preg_replace('/\bای/u', '', $str);
Похоже, вам нужно что-то вроде этого \x{627}\x{6CC}\x{640}?