胎发替换为多个花括号

时间:2020-06-18 17:30:55

标签: regex preg-replace special-characters

我想用} string%{

替换} string {之间的内容

我要添加%来编辑搜索查询。

字符串示例- {a26f089ed1530be8648027b493a21bfd44c5fb15d632afc8f1c539c7c3da88a4} out {a26f089ed1530be8648027b493a21bfd44c5fb15d632afc8f1c539c7c3c88da4}}

每对冰壶之间的2个值每次{rAndows2ring}都会改变

我尝试了很多变体,而最接近的是

$where = preg_replace("/\}([^}]+)\{/", "}$1%{", $where);

但这会在第一个{处返回额外的%。

%{212190298d692385253efb2a1062006ddf3ea008e3cdc2f8b8f11884ec863202}out%{212190298d692385253efb2a1062006ddf3ea008e3cdc2f8b8f11884ec863202}

提前谢谢!

1 个答案:

答案 0 :(得分:-1)

这有效:

<?php

$oldString = '{a26f089ed1530be8648027b493a21bfd44c5fb15d632afc8f1c539c7c3da88a4}out{a26f089ed1530be8648027b493a21bfd44c5fb15d632afc8f1c539c7c3da88a4}';
echo '<p>oldString: ';
var_dump($oldString);
echo '</p>';


$newString = preg_replace('#(\{[\d\w]+\})([\d\w]+)(\{[\d\w]+\})#', '$1$2%$3', $oldString);

echo '<p>newString: ';
var_dump($newString);
echo '</p>';

?>
  • (\ {[\ d \ w] + \})捕获用括号括起来的第一串数字和单词字符。
  • ([[\ d \ w] +)捕获'out',或介于两者之间的任何其他数字字符串和单词字符
  • (\ {[\ d \ w] + \})与上述相同