Php中字符串内容的完全匹配

时间:2015-09-01 20:07:17

标签: php

我希望以下代码只替换完全匹配的字符串,而不是部分匹配。例如;取代"海军"与"蓝"不是"海军船"与" Blue Ship"

<?php
function replaceWords($value) {
    //here are predefined values
    $predefined = array(
        array(`enter code here`
            'search'=>'Navy, Dark Blue, Blackcurrant, Blue/White, Navy Blue',
            'replaceWith'=>'Blue'
        ),
        array(
            'search'=>'Rose, Dark Red, Pink, Maroon, Burgundy',
            'replaceWith'=>'Red'
        )
    );
    //search and replace
    foreach ($predefined as $item) {
        $search = array_map('trim', explode(',', $item['search']));
        $value = str_ireplace($search, $item['replaceWith'], $value);
    }
    return $value;
}

3 个答案:

答案 0 :(得分:0)

如果要替换精确字符串(如果它们存在于数组中),只需检查它是否存在于数组中并返回结果(如果存在)。

where

但是,如果要忽略大小写,请将预定义值中的所有元素替换为小写,并使用foreach ($predefined as $item) { if (in_array($value, $search)) { return $item['replaceWith']; } } 而不是strtolower($value)

答案 1 :(得分:0)

你可以试试这个:

$value = preg_replace("/\b(".$search.")\b/", $item['replaceWith'],$value);

答案 2 :(得分:0)

阵列(enter code here             &#39;搜索&#39; =&gt;&#39;海军舰船&#39;,             &#39; replace&#39; =&gt;&#39; Navy Ship&#39;         ),

它将阻止海军舰艇被替换。