如何检查字符是否是单词的一部分
How to check if character is part of a word
我在这里搜索过这个主题,我看到的建议来自
Check if a character is a word boundary
但我不知道这是否正是我需要的
我的问题是这样的,我必须从word中提取一个字符串,这个字符串可以是单个字符也可以是多个,在这个问题中我只讨论单个字符因为这是我的情况的主要问题,其他字符串是多个字符的类型很容易识别,因为在我要从中删除它的字符串中只有一次遇到它
"S Shoulder Pads"
在这个例子中,我必须从这个字符串中删除字符 S
,问题是数据并不真正一致,所以 strpos()
或 strrpos()
并不总是有效。可以颠倒提供相同的字符串,因此我无法始终知道我需要的字符位于
"Shoulder Pads S"
我对需要提取的单个字符串的唯一验证是,如果字符是单个字母并且它不是此示例中任何单词的一部分 S
那么它可以有效删除。在 PHP 中有什么好的方法可以做到这一点吗?
正如您猜对的那样,您可以在字符串周围使用单词边界 \b
来匹配它,使其单独存在而不是作为任何字符串的一部分。您可以使用preg_replace
将匹配的字符串替换为任意字符串,这是该函数的第二个参数。
片段:
<?php
$tests = [
"S Shoulder Pads",
"Shoulder Pads S",
"SSSSS S S S"
];
foreach($tests as $test){
echo preg_replace('/\bS\b/','',$test),PHP_EOL;
}
我在这里搜索过这个主题,我看到的建议来自
Check if a character is a word boundary
但我不知道这是否正是我需要的
我的问题是这样的,我必须从word中提取一个字符串,这个字符串可以是单个字符也可以是多个,在这个问题中我只讨论单个字符因为这是我的情况的主要问题,其他字符串是多个字符的类型很容易识别,因为在我要从中删除它的字符串中只有一次遇到它
"S Shoulder Pads"
在这个例子中,我必须从这个字符串中删除字符 S
,问题是数据并不真正一致,所以 strpos()
或 strrpos()
并不总是有效。可以颠倒提供相同的字符串,因此我无法始终知道我需要的字符位于
"Shoulder Pads S"
我对需要提取的单个字符串的唯一验证是,如果字符是单个字母并且它不是此示例中任何单词的一部分 S
那么它可以有效删除。在 PHP 中有什么好的方法可以做到这一点吗?
正如您猜对的那样,您可以在字符串周围使用单词边界 \b
来匹配它,使其单独存在而不是作为任何字符串的一部分。您可以使用preg_replace
将匹配的字符串替换为任意字符串,这是该函数的第二个参数。
片段:
<?php
$tests = [
"S Shoulder Pads",
"Shoulder Pads S",
"SSSSS S S S"
];
foreach($tests as $test){
echo preg_replace('/\bS\b/','',$test),PHP_EOL;
}