PHP preg_replace – 在结果中包含模式/完整主题

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了PHP preg_replace – 在结果中包含模式/完整主题脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个问题,我无法解决自己:替换…

locale("Sendx","Send")
locale("System","System")

应成为:

locale("Sendx","Subsub")
locale("System","NewSys")

我试过一个简单的替换:

$myseArchword = "System"; #changes in a loop
$myreplaceword = "Newsys"; #also changes in the loop
$oneline = str_replace($mysearchword,$myreplaceword,$oneline);

但结果看起来像

locale("Sendx","53ND")
locale("Newsys","Newsys") #PRoblem wITh the doubled word

当然,系统两次都被取代了.所以我决定使用preg_replace

$pattern = '/locale\\(["|\']([^"\']*)["|\'],["|\']([^"\']*)["|\']\\)/';
$replacement = '${1},Newsys';
$subject = 'locale("System","System")';
echo preg_replace($pattern,$replacement,$subject,-1 );

但现在几乎没有任何东西丢失,因为只返回括号中的单词而我不知道如何包含该模式或返回替换的$subject.
$pattern更改,所以我无法将“locale(…”写入$replacement /我不知何故必须返回替换模式…

System,Newsys # No idea how to combine $replacement with $pattern...

你能帮我找到合适的结果吗?

解决方法

我想你正在寻找这样的东西:

$input  = 'locale("Sendx","Send")';
$output = preg_replace('/,"(.*?)"/',',"Subsub"',$input);
echo $output;
echo "\n";

$input  = 'locale("System","System")';
$output = preg_replace('/,"Newsys"',$input);
echo $output;

输出

locale("Sendx","Newsys")

模式/,“(.*?)”/在逗号之后搜索双引号之间的单词并替换为“NEW_WORD”

使用此模式,您可以轻松地在循环中替换它们:

$input = array(
  'locale("Sendx","Send")' => 'Subsub','locale("System","System")' => 'Newsys'
);

foreach($input as $string => $replacement) {
    $output = preg_replace('/,"' . $replacement . '"',$string);
    echo $output. PHP_EOL;
}

脚本宝典总结

以上是脚本宝典为你收集整理的PHP preg_replace – 在结果中包含模式/完整主题全部内容,希望文章能够帮你解决PHP preg_replace – 在结果中包含模式/完整主题所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。