首页 > 解决方案 > 正则表达式仅选择一个单词而不是包含这些字母的单词

问题描述

用户输入"California city ca" 如果在输入中找到状态,则像这样保存状态

$state_code = find_state_code_input($full_location); //$state_code = "ca"

我有以下函数,它找到模式的第一个匹配项并将其替换为其他值

function str_replace_first($find, $replaceTo, $content) {
    $find = '/'.preg_quote($find, '/').'/';
    return preg_replace($find, $replaceTo, $content, 1);
}

如果发现状态,我将其从原始完整字符串中删除

if (!empty($state_code))
    $full_location = str_replace_first($state_code, "", $full_location);
  //$full_location = "lifornia city ca"

但是输出是"lifornia city ca"我如何才能做到这一点,以便只"ca"删除单词而不删除包含这些字母的其他单词?即使在只有用户输入的情况下,"ca"我对正则表达式的经验也没有那么一些帮助,我们将不胜感激

标签: phpregex

解决方案


你会使用单词边界。尝试:

\bca\b

https://regex101.com/r/A6BKRo/1/


推荐阅读