如何删除包含 PHP 中的数字的单词
How to remove a word if it contains a number in PHP
我想知道如何删除包含数字的单词。例如我有句子"Lorum ipsum: 7-Dt Dolor Sit, Amet 8-AM. Consectetur adipiscing"。我要删除的是“7-Dt”和“8-AM”
我试过:
$str = 'Lorum ipsum: 7-Dt Dolor Sit, Amet 8-AM. Consectetur adipiscing';
$arr = preg_replace("/[^a-zA-Z\']/"," ",$str);
echo($arr);
// Outputs: Lorum ipsum Dt Dolor Sit Amet AM Consectetur adipiscing
在我的解决方案中,它只删除了数字,但没有删除它后面的 letters/words。
我最好创建一个函数,这样我就可以多次使用它。
要删除 由字母、数字或下划线组成的单词,并且包含您可以使用的数字
preg_replace("/[^\W\d]*\d\w*/", " ",$str)
要删除包含数字的非空白字符块,请使用
preg_replace("/[^\s\d]*\d\S*/", " ",$str)
如果数字与您需要删除的其他字符混合,请使用
preg_replace("/(?:[^\W\d]+\d|\d+[^\W\d])\w*/", " ",$str)
preg_replace("/(?:[^\s\d]+\d|\d+[^\s\d])\S*/", " ",$str)
在你的具体案例中,因为你也想保留尾随标点符号,你可以使用
preg_replace("/(?:[^\s\d]+\d|\d+[^\s\d])\S*\b/", " ",$str)
参见PHP demo,\b
字边界将要求与\S*
匹配的最后一个字符是一个字字符。在某些情况下,您甚至需要确保其后没有单词 char,然后将 \b
替换为 \b(?!\w)
.
图案详情
[^\s\d]*
- 除空格和数字以外的零个或多个字符
\d
- 一个数字
\S*
- 0 个或多个非空白字符
[^\W\d]*\d\w*
- 匹配除非单词和数字字符以外的 0 个或多个字符,然后是数字,然后是 0+ 个单词字符("word" 字符是字母、数字或 _
)
(?:[^\s\d]+\d|\d+[^\s\d])
- 匹配以下两种选择之一:
[^\s\d]+\d
- 除了空格和数字外的 1+ 个字符,然后是数字
|
- 或
\d+[^\s\d]
- 1+ 个数字,然后是除空格和数字以外的字符
我想知道如何删除包含数字的单词。例如我有句子"Lorum ipsum: 7-Dt Dolor Sit, Amet 8-AM. Consectetur adipiscing"。我要删除的是“7-Dt”和“8-AM”
我试过:
$str = 'Lorum ipsum: 7-Dt Dolor Sit, Amet 8-AM. Consectetur adipiscing';
$arr = preg_replace("/[^a-zA-Z\']/"," ",$str);
echo($arr);
// Outputs: Lorum ipsum Dt Dolor Sit Amet AM Consectetur adipiscing
在我的解决方案中,它只删除了数字,但没有删除它后面的 letters/words。
我最好创建一个函数,这样我就可以多次使用它。
要删除 由字母、数字或下划线组成的单词,并且包含您可以使用的数字
preg_replace("/[^\W\d]*\d\w*/", " ",$str)
要删除包含数字的非空白字符块,请使用
preg_replace("/[^\s\d]*\d\S*/", " ",$str)
如果数字与您需要删除的其他字符混合,请使用
preg_replace("/(?:[^\W\d]+\d|\d+[^\W\d])\w*/", " ",$str)
preg_replace("/(?:[^\s\d]+\d|\d+[^\s\d])\S*/", " ",$str)
在你的具体案例中,因为你也想保留尾随标点符号,你可以使用
preg_replace("/(?:[^\s\d]+\d|\d+[^\s\d])\S*\b/", " ",$str)
参见PHP demo,\b
字边界将要求与\S*
匹配的最后一个字符是一个字字符。在某些情况下,您甚至需要确保其后没有单词 char,然后将 \b
替换为 \b(?!\w)
.
图案详情
[^\s\d]*
- 除空格和数字以外的零个或多个字符\d
- 一个数字\S*
- 0 个或多个非空白字符[^\W\d]*\d\w*
- 匹配除非单词和数字字符以外的 0 个或多个字符,然后是数字,然后是 0+ 个单词字符("word" 字符是字母、数字或_
)(?:[^\s\d]+\d|\d+[^\s\d])
- 匹配以下两种选择之一:[^\s\d]+\d
- 除了空格和数字外的 1+ 个字符,然后是数字|
- 或\d+[^\s\d]
- 1+ 个数字,然后是除空格和数字以外的字符