Php 用大写和小写字母匹配和替换单词的模式

Php 用大写和小写字母匹配和替换单词的模式,php,regex,preg-replace,expression,Php,Regex,Preg Replace,Expression,我在从字符串中删除无意义的单词时遇到了这个问题,例如: $string=“嗨,我的名字是Tom.jc2pMK NB,xVD NOZmF_uucyndtr46eeb8y,74今天我注册了stack overflow.krEBNB1cB8 cq7,zCL x5kowrzfu13.bI g g_ixlczlcztxyn,dpnmcgj2fydhax@i喜欢它。0t1lakuopxcyc5uk6mlg r1xf,EKxXvT1 sjzyc4yc4e” 现在我希望能够在PHP中搜索并销毁这些毫无意义的单词

我在从字符串中删除无意义的单词时遇到了这个问题,例如:

$string=“嗨,我的名字是Tom.jc2pMK NB,xVD NOZmF_uucyndtr46eeb8y,74今天我注册了stack overflow.krEBNB1cB8 cq7,zCL x5kowrzfu13.bI g g_ixlczlcztxyn,dpnmcgj2fydhax@i喜欢它。0t1lakuopxcyc5uk6mlg r1xf,EKxXvT1 sjzyc4yc4e”

现在我希望能够在PHP中搜索并销毁这些毫无意义的单词。我试图
preg_replace($pattern,“,$string)
,但想不出一个模式,让“Hi”留在那里,但删除“jc2pMK”。我打赌这是一个带字符串的基本过程,每个基本程序员都应该很容易理解,但我没有使用正则表达式的经验


我对任何其他想法都持开放态度,即如何摆脱无意义的词语。

正如其他人所评论的,你没有定义什么是“无意义的词语”,因此不可能回答你的问题。但是,对于您的示例
$string
,仅起作用的正则表达式(不保证其他字符串)如下所示:

匹配(前面有一个空格):

替换:

[leave empty]
你可以在线测试它

下面是等效的PHP代码片段:

$output = "Hi, my name is Tom. jc2pMK NB,xVD NOZmF__u cYNdtR46eEb8y,74 Today i registered to stack overflow. krEBNB1cB8 cq7,zCL x5KOwwRZfU13.bI g_IXxlcztXYN , DPnmcgj2FyydHAx@ I like IT. 0T1LAkuoPXscYC5uK6mlG R1nix_5kwF ,EKxXvT1 SjZYC4A6YQ 4E";
$result = preg_replace('/ (?:\w+[0-9_,@](?:\.\w)?\w*|[0-9.,]\w*)/',"",$output);
echo $result; #prints Hi, my name is Tom. Today i registered to stack overflow. I like IT.

同样,对于您的特定字符串,这只是一个快速而肮脏的解决方案。

正如其他人所评论的,您没有定义什么是“无意义的词”,因此不可能回答您的问题。但是,对于您的示例
$string
,仅起作用的正则表达式(不保证其他字符串)如下所示:

匹配(前面有一个空格):

替换:

[leave empty]
你可以在线测试它

下面是等效的PHP代码片段:

$output = "Hi, my name is Tom. jc2pMK NB,xVD NOZmF__u cYNdtR46eEb8y,74 Today i registered to stack overflow. krEBNB1cB8 cq7,zCL x5KOwwRZfU13.bI g_IXxlcztXYN , DPnmcgj2FyydHAx@ I like IT. 0T1LAkuoPXscYC5uK6mlG R1nix_5kwF ,EKxXvT1 SjZYC4A6YQ 4E";
$result = preg_replace('/ (?:\w+[0-9_,@](?:\.\w)?\w*|[0-9.,]\w*)/',"",$output);
echo $result; #prints Hi, my name is Tom. Today i registered to stack overflow. I like IT.

同样,对于您的特定字符串,这只是一个快速而肮脏的解决方案。

正如其他人所评论的,您没有定义什么是“无意义的词”,因此不可能回答您的问题。但是,对于您的示例
$string
,仅起作用的正则表达式(不保证其他字符串)如下所示:

匹配(前面有一个空格):

替换:

[leave empty]
你可以在线测试它

下面是等效的PHP代码片段:

$output = "Hi, my name is Tom. jc2pMK NB,xVD NOZmF__u cYNdtR46eEb8y,74 Today i registered to stack overflow. krEBNB1cB8 cq7,zCL x5KOwwRZfU13.bI g_IXxlcztXYN , DPnmcgj2FyydHAx@ I like IT. 0T1LAkuoPXscYC5uK6mlG R1nix_5kwF ,EKxXvT1 SjZYC4A6YQ 4E";
$result = preg_replace('/ (?:\w+[0-9_,@](?:\.\w)?\w*|[0-9.,]\w*)/',"",$output);
echo $result; #prints Hi, my name is Tom. Today i registered to stack overflow. I like IT.

同样,对于您的特定字符串,这只是一个快速而肮脏的解决方案。

正如其他人所评论的,您没有定义什么是“无意义的词”,因此不可能回答您的问题。但是,对于您的示例
$string
,仅起作用的正则表达式(不保证其他字符串)如下所示:

匹配(前面有一个空格):

替换:

[leave empty]
你可以在线测试它

下面是等效的PHP代码片段:

$output = "Hi, my name is Tom. jc2pMK NB,xVD NOZmF__u cYNdtR46eEb8y,74 Today i registered to stack overflow. krEBNB1cB8 cq7,zCL x5KOwwRZfU13.bI g_IXxlcztXYN , DPnmcgj2FyydHAx@ I like IT. 0T1LAkuoPXscYC5uK6mlG R1nix_5kwF ,EKxXvT1 SjZYC4A6YQ 4E";
$result = preg_replace('/ (?:\w+[0-9_,@](?:\.\w)?\w*|[0-9.,]\w*)/',"",$output);
echo $result; #prints Hi, my name is Tom. Today i registered to stack overflow. I like IT.

同样,对于您的特定字符串,这只是一个快速而肮脏的解决方案。

如果您想在语义级别上解决这个问题,您需要某种字典。一个穷人的做法是

$dict = file('wordsEn.txt', FILE_IGNORE_NEW_LINES);
$string = "Hi, my name is Tom. jc2pMK NB,xVD NOZmF__u cYNdtR46eEb8y,74 Today i registered to stack overflow. krEBNB1cB8 cq7,zCL x5KOwwRZfU13.bI g_IXxlcztXYN , DPnmcgj2FyydHAx@ I like IT. 0T1LAkuoPXscYC5uK6mlG R1nix_5kwF ,EKxXvT1 SjZYC4A6YQ 4E";
$words = explode(' ', $string); // can also use str_word_count
echo implode (' ', array_intersect($words, $dict) );
这将把一个字典加载到一个数组中,将字符串拆分成一个数组,然后创建一个diff,为您提供字典中同样存在的字符串中的单词。在本例中,我使用了一个字典,它将导致:

我的名字注册为stack like

显然,结果只能和你的字典一样好。此外,该解决方案未考虑套管。但它应该给你一个如何解决这个问题的想法


您将在中找到更复杂的解决方案,例如使用和扩展名,它允许您根据字典文件拼写检查单词。

如果您想在语义级别上解决此问题,您需要某种类型的字典。一个穷人的做法是

$dict = file('wordsEn.txt', FILE_IGNORE_NEW_LINES);
$string = "Hi, my name is Tom. jc2pMK NB,xVD NOZmF__u cYNdtR46eEb8y,74 Today i registered to stack overflow. krEBNB1cB8 cq7,zCL x5KOwwRZfU13.bI g_IXxlcztXYN , DPnmcgj2FyydHAx@ I like IT. 0T1LAkuoPXscYC5uK6mlG R1nix_5kwF ,EKxXvT1 SjZYC4A6YQ 4E";
$words = explode(' ', $string); // can also use str_word_count
echo implode (' ', array_intersect($words, $dict) );
这将把一个字典加载到一个数组中,将字符串拆分成一个数组,然后创建一个diff,为您提供字典中同样存在的字符串中的单词。在本例中,我使用了一个字典,它将导致:

我的名字注册为stack like

显然,结果只能和你的字典一样好。此外,该解决方案未考虑套管。但它应该给你一个如何解决这个问题的想法


您将在中找到更复杂的解决方案,例如使用和扩展名,它允许您根据字典文件拼写检查单词。

如果您想在语义级别上解决此问题,您需要某种类型的字典。一个穷人的做法是

$dict = file('wordsEn.txt', FILE_IGNORE_NEW_LINES);
$string = "Hi, my name is Tom. jc2pMK NB,xVD NOZmF__u cYNdtR46eEb8y,74 Today i registered to stack overflow. krEBNB1cB8 cq7,zCL x5KOwwRZfU13.bI g_IXxlcztXYN , DPnmcgj2FyydHAx@ I like IT. 0T1LAkuoPXscYC5uK6mlG R1nix_5kwF ,EKxXvT1 SjZYC4A6YQ 4E";
$words = explode(' ', $string); // can also use str_word_count
echo implode (' ', array_intersect($words, $dict) );
这将把一个字典加载到一个数组中,将字符串拆分成一个数组,然后创建一个diff,为您提供字典中同样存在的字符串中的单词。在本例中,我使用了一个字典,它将导致:

我的名字注册为stack like

显然,结果只能和你的字典一样好。此外,该解决方案未考虑套管。但它应该给你一个如何解决这个问题的想法


您将在中找到更复杂的解决方案,例如使用和扩展名,它允许您根据字典文件拼写检查单词。

如果您想在语义级别上解决此问题,您需要某种类型的字典。一个穷人的做法是

$dict = file('wordsEn.txt', FILE_IGNORE_NEW_LINES);
$string = "Hi, my name is Tom. jc2pMK NB,xVD NOZmF__u cYNdtR46eEb8y,74 Today i registered to stack overflow. krEBNB1cB8 cq7,zCL x5KOwwRZfU13.bI g_IXxlcztXYN , DPnmcgj2FyydHAx@ I like IT. 0T1LAkuoPXscYC5uK6mlG R1nix_5kwF ,EKxXvT1 SjZYC4A6YQ 4E";
$words = explode(' ', $string); // can also use str_word_count
echo implode (' ', array_intersect($words, $dict) );
这将把一个字典加载到一个数组中,将字符串拆分成一个数组,然后创建一个diff,为您提供字典中同样存在的字符串中的单词。在本例中,我使用了一个字典,它将导致:

我的名字注册为stack like

显然,结果只能和你的字典一样好。此外,该解决方案未考虑套管。但它应该给你一个如何解决这个问题的想法

例如,您将在wit中找到更复杂的解决方案