正则表达式只选择一个单词而不是包含这些单词的单词

时间:2018-06-02 22:30:03

标签: php regex

用户输入"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"的情况下,我对正则表达式的体验也不尽如人意,我们将非常感谢

2 个答案:

答案 0 :(得分:1)

答案 1 :(得分:0)

使用$:

    $full_location = "california city ca";
    $state_code = 'ca';

    $find = '/'.preg_quote($state_code).'$/';
    if (!empty($state_code))
        $full_location = preg_replace($find, '', $full_location, 1);

    echo $full_location;