如何检查字符是否是单词的一部分

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;
}