You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP正则:移除字符串中以连字符/空格包裹的指定词汇

问题描述

需要移除字符串中满足以下条件的指定词汇(in、في、فى):

  • 词汇前后为空格(如单独的in)
  • 词汇前后为连字符(如-in-)

已尝试的代码:

$string = 'inline things in inline workin workin AND inline-things-in-inline-workin-workin فيلا فيلا في انفيلا انفي انفي AND فيلا-فيلا-في-انفيلا-انفي-انفي';
$array_of_words = ['in' , 'في' , 'فى'];
// I tried
echo _remove_words($string , $array_of_words);
function _remove_words($string , $array_of_words){
  $string = preg_replace('/(?<=^|[^\p{L}])' . implode('|',$array_of_words) . '(?=[^\p{L}]|$)/ui','',$string);
  return $string;
}

当前正则未达到预期效果,预期输出为:

inline things inline workin workin AND inline-things-inline-workin-workin فيلا فيلا انفيلا انفي انفي AND فيلا-فيلا انفيلا-انفي-انفي

也曾尝试其他正则模式:

'/#-' . implode('|',$array_of_words) . '-#/ui'
'/^-' . implode('|',$array_of_words) . '-$/ui'
解决方案

原正则的问题在于匹配替换后会产生连续的空格或连字符,需要补充处理这类冗余字符。同时要注意对特殊字符转义,避免正则匹配异常。以下是修正后的实现:

$string = 'inline things in inline workin workin AND inline-things-in-inline-workin-workin فيلا فيلا في انفيلا انفي انفي AND فيلا-فيلا-في-انفيلا-انفي-انفي';
$array_of_words = ['in' , 'في' , 'فى'];

echo _remove_words($string , $array_of_words);

function _remove_words($string , $array_of_words){
    // 对目标词汇进行正则转义,避免特殊字符干扰
    $escaped_words = array_map(function($word) {
        return preg_quote($word, '/');
    }, $array_of_words);
    $words_pattern = implode('|', $escaped_words);
    
    // 匹配前后为非字母的目标词汇(覆盖空格、连字符、字符串边界场景)
    $string = preg_replace("/(?<=^|[^\p{L}])($words_pattern)(?=[^\p{L}]|$)/ui", '', $string);
    
    // 处理替换后产生的连续空格,合并为单个空格
    $string = preg_replace('/\s+/', ' ', $string);
    // 处理替换后产生的连续连字符,合并为单个连字符
    $string = preg_replace('/-{2,}/', '-', $string);
    
    // 去除字符串首尾可能存在的冗余空格
    return trim($string);
}

逻辑说明

  1. 正则转义:对目标词汇中的特殊字符进行转义,确保正则匹配准确。
  2. 匹配目标词汇:使用(?<=^|[^\p{L}])和(?=[^\p{L}]|$)确保只匹配前后为非字母字符的目标词汇,避免误删单词内部的子串(如inline中的in)。
  3. 清理冗余字符:替换后可能出现连续空格或连字符,通过正则将其合并为单个字符,保证输出格式整洁。

内容的提问来源于stack exchange,提问作者Mohamed-Yousef

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 19:44:57