Php 如何删除单词开头的所有特殊字符?
我有这样一个波斯语文本:Php 如何删除单词开头的所有特殊字符?,php,regex,persian,Php,Regex,Persian,我有这样一个波斯语文本: $str = 'این یک متن تست است. اینجا ایران است'; 这也是我想要删除它的地方(如果它在单词的第一个部分,基本上第一个的定义是在空格之后): 所以我想要这个输出: $newstr: 'ن یک متن تست است. نجا ران است'; 我尝试的只是第一个字: echo $newstr = preg_replace('/^ای\u/', '', $str); // output: ن یک متن تست است
$str = 'این یک متن تست است. اینجا ایران است';
这也是我想要删除它的地方(如果它在单词的第一个部分,基本上第一个的定义是在空格之后):
所以我想要这个输出:
$newstr: 'ن یک متن تست است. نجا ران است';
我尝试的只是第一个字:
echo $newstr = preg_replace('/^ای\u/', '', $str);
// output: ن یک متن تست است. اینجا ایران است
不管怎样,我如何实现它的第一个字
(需要注意的是,从语义角度看,和
是一样的,我知道,有明显的区别)
编辑:以下是我的英文版问题:
$str = 'it is a test, i like that';
现在我想要这个:(删除每个单词开头的所有I
)
我该怎么做呢?这个问题对我来说有点难理解,但你的正则表达式中有几个部分可能是阻碍你的原因:
^
-与字符串开头的匹配
\u
-是PCRE不支持的语法,您可能想在分隔符/u
后加上u以启用utf-8处理
做出这些改变会带来:
echo preg_replace('/ای/u', '', $str);
哪些产出:
ن یک متن تست است. نجا ران است
要使其仅在单词开头匹配,请使用\b
echo preg_replace('/\bای/u', '', $str);
看来你需要这样的东西\x{627}\x{6CC}\x{640}?
的答案可能会对你有所帮助。@BobKaufman似乎很有用,谢谢。Sajad,这里的大多数人都看不懂波斯语,至少对我来说,你的问题是否真的与波斯语字母有关还不清楚。但我猜。请尝试搜索有关字符串替换的更多常见问题,并删除此问题或使其更一般化(它可能会作为副本关闭)。我试图理解特殊字符的含义,但无法分辨。当然,这是一个右->左排序。@sln是的,它是从右到左排序。您的代码很好,但有一个小问题,请用这个词试试:。它将替换为لک
;因为<代码> > <代码>在词的中间,我需要让它像原封不动地去……什么?这对我来说真的不清楚,你知道。。。我使用PHP。Paul Crovella的答案很好,但我不知道为什么\b
对我不起作用。你知道,这可能是从右到左的顺序。问题是,有单词边界,试着把\b
放在另一边。嗯,是的,看起来你是对的,有什么解决办法吗?
echo preg_replace('/\bای/u', '', $str);