Php 用多个替换符替换多个字符

Php 用多个替换符替换多个字符,php,regex,Php,Regex,在整个代码中,我有很多这样的调用,以避免行的列上出现任何反勾号 htmlentities(str_replace("`", "``", $row['column']), ENT_QUOTES); 我做了一个添加,要求该列替换一个宽度。由于大多数调用都是在输出中进行的,所以我希望在一行中有一个解决方案 我在考虑条件正则表达式(preg_replace_callback),但这是实现这一点的最佳方法吗?所以我需要的是: 将反勾号替换为2个反勾号,并将哈希替换为2个哈希。(这是为了转义)。支持数组参

在整个代码中,我有很多这样的调用,以避免行的列上出现任何反勾号

htmlentities(str_replace("`", "``", $row['column']), ENT_QUOTES);
我做了一个添加,要求该列替换一个
宽度
。由于大多数调用都是在输出中进行的,所以我希望在一行中有一个解决方案

我在考虑条件正则表达式(preg_replace_callback),但这是实现这一点的最佳方法吗?所以我需要的是: 将反勾号替换为2个反勾号,并将哈希替换为2个哈希。(这是为了转义)。

支持数组参数:

// translation map:
$map = [
    '`' => '``',
    '#' => '##'
];

// what to replace:
$from = array_keys($map);

// replace by what:
$to   = array_values($map);

echo htmlentities(str_replace($from, $to, $row['column']), ENT_QUOTES);
在极少数情况下,需要缩小代码,您可以尝试使用:

echo htmlentities(str_replace([ '`', '#' ], [ '``', '##' ], $row['column']), ENT_QUOTES));
//                            ^             ^
//                        from what     by what

这很简单,只需将数组用作
str\u replace

htmlentities(str_replace(array("`","#"), array("``","##"), $row['column']), ENT_QUOTES);
如中所述,您可以使用数组:

str_replace(["`", "#"], ["``", "##"], $row['column']);

如果有人希望使用正则表达式:

preg_replace("/`|#/", "$0$0")

他一行说:p@GeorgeGarchagudashvili我相信它是不可读的,所以我强烈建议写可读的代码。有时候,你只需要一行,而不是浪费时间去读不可读的“可读的”@GeorgeGarchagudashvili。然而,考虑到未来的读者不要因为源代码或模板的“非殖民化”而哭泣,这可能是“好的”。虽然我同意,这将是制作可读代码的正确方法,但它不适用于我拥有的代码。代码中有很多这样的调用,我只需要为我的IDE提供一个替换字符串。请记住,通过让一个函数为您完成工作,您可以将所有内容都单列出来。