使用str_replace匹配整个单词/不区分大小写

时间:2018-08-10 18:52:25

标签: php preg-replace str-replace

我正在尝试使用str_replace替换字符串中的整个单词,但是,即使单词中匹配的字母也将被替换。我尝试了preg_replace,但由于我要替换的单词很多,因此无法使用。任何帮助表示赞赏。

$array2 = array('is','of','to','page');

$text = "homepage-of-iso-image";
echo $text1 = str_replace($array2,"",$text);

the output is : home--o-image

2 个答案:

答案 0 :(得分:0)

对于全字问题,有a solution here使用preg_replace(),您的解决方案是将/\b添加到开头,将\b/u添加到结尾您的数组值。不区分大小写的代码可以使用preg_replace_callback (请参见示例#1)处理,但是如果您使用的是像您的示例这样的小型数组,那么我建议您复制数组值。

适用于您的示例:

$array2 = array(
  '/\bis\b/u',
  '/\bof\b/u',
  '/\bto\b/u',
  '/\bpage\b/u',
  '/\bIS\b/u',
  '/\bOF\b/u',
  '/\bTO\b/u',
  '/\bPAGE\b/u'
);

$text = "homepage-of-iso-image";
echo $text1 = preg_replace($array2,"",$text);

答案 1 :(得分:0)

您可以使用array_diff

array array_diff ( array $array1 , array $array2 [, array $... ] )
     

将array1与一个或多个其他数组进行比较,并返回   其他数组中不存在的array1中的值。

<?php

$remove = array('is','of','to','page');

$text   = "homepage-of-iso-image";
$parts  = explode('-', $text);

$filtered = array_diff($parts, $remove);
print implode('-', $filtered);

输出:

homepage-iso-image