php - 在 preg_replace 中处理字符 / - PHP
问题描述
我想替换字符串中所有出现的特定术语(或者说一个段落)。
这些术语可以是 Blue Restaurant Ocean/Blue Restaurant、Blue's Restaurant。
$inputext = "The name is Ocean/Blue Restaurant ";
$term = "Ocean/Blue Restaurant";
$rule = "/". $term."/i";
$replacetext = "[X]";
$outputext = preg_replace($rule, $replacetext, $inputext);
echo $outputext,"\n";
期望的输出
The name is [X]
当字符“/”在输入中时,它无法工作。
我的主要目标是替换段落中所有出现的短语。是否有使用 preg_replace 的通用方法?
谢谢您的帮助。
解决方案
$inputext = "Those terms can be Blue Restaurant Ocean/Blue Restaurant, Blue's Restaurant.";
// you put your phrases here, remember to escape
// double quote if you want to use it as phrase
$termList = [
"Ocean Restaurant",
"Ocean/Blue Restaurant",
"Blue Restaurant",
"Blue's Restaurant",
"so called \"double quote\" probably",
];
$pattern = '';
$termsCount = count($termList);
for ($i=0; $i<$termsCount; $i++) {
$item = '(' . preg_quote($termList[$i], '/') . ')';
if ($i < $termsCount -1) {
$item .= '|';
}
$pattern .= $item;
}
$rule = '/' . $pattern . '/i';
$replacetext = "[X]";
$outputext = preg_replace($rule, $replacetext, $inputext);
echo $outputext,"\n";
array_map
使用and 的示例implode
:
$inputext = "Those terms can be Blue Restaurant Ocean/Blue Restaurant, Blue's Restaurant.";
// you put your phrases here, remember to escape
// double quote if you want to use it as phrase
$termList = [
"Ocean Restaurant",
"Ocean/Blue Restaurant",
"Blue Restaurant",
"Blue's Restaurant",
"so called \"double quote\" probably",
];
$esc = function(string $input) : string
{
return '(' . preg_quote($input, '/') . ')';
};
$termEscapedList = array_map($esc, $termList);
$pattern = implode('|', $termEscapedList);
$rule = '/' . $pattern . '/i';
$replacetext = "[X]";
$outputext = preg_replace($rule, $replacetext, $inputext);
echo $outputext,"\n";
推荐阅读
- flutter - 你如何在 dart 中执行抽象类的继承?错误:超类 SpanishData 没有零参数构造函数
- azure-devops-server-2019 - 如何设置离线 Azure DevOps 源?
- swift - SwiftUI 按钮未正确注册
- java - 在 JAVA 中创建一个直方图,让您可以直观地检查一组值的频率分布
- javascript - 为什么最初请求的 HTML 与显示给用户和检查元素的内容不同?
- c++ - “C26444 避免使用自定义构造和销毁 (es.84) 的未命名对象”是什么意思?在VS2019中是什么意思?
- swift - Swift:用其他语言显示 Date()
- flutter - FormBuilderDateTimePicker 不会打开日历
- javascript - 为什么我的 Javascript 主题颜色函数被调用但仍然无法正常工作?
- php - 将多个复选框插入 MySQL (PDO)