dongxian0421 2012-09-12 10:19
浏览 45
已采纳

preg_replace有两个数组

I've have a problem with preg_replace() using arrays.

Basically, I'd like to transpose this string ;

$string = "Dm F Bb F Am";

To

$New_string = "F#m D D A C#m";

Here is what I do:

$Find = Array("/Dm/", "/F/", "/Bb/", "/Am/", "/Bbm/", "/A/", "/C/");
$Replace = Array('F#m', 'A', 'D', 'C#m', 'Dm', 'C#', 'E');
$New_string = preg_replace($Find, $Replace, $string);

But I get this result instead :

E##m E# D E# E#m

Problem is that every match is replaced by the following, something like this happens (example for E##m):

Dm -> F#m -> A#m -> C##m -> E##m

Is there any solution to simply change 'Dm' to 'F#m', "F" to "A", etc ?

Thank you !

  • 写回答

2条回答 默认 最新

  • dongpin4611 2012-09-12 10:39
    关注

    You could use strtr():

    <?php
        $string = "Dm F Bb F Am";
        $Find = Array('Dm', 'F', 'Bb', 'Am', 'Bbm', 'A', 'C');
        $Replace = Array('F#m', 'A', 'D', 'C#m', 'Dm', 'C#', 'E');
    
        $New_string = strtr($string, array_combine($Find, $Replace));
    
        echo $New_string;
    
        // F#m A D A C#m
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 php 将rtmp协议转hls协议,无法播放
  • ¥15 miniconda安装不了
  • ¥20 python代码编写
  • ¥20 使用MPI广播数据遇到阻塞
  • ¥15 TinyMCE如何去掉自动弹出的“链接…”工具?
  • ¥15 微信支付转账凭证,如何解决
  • ¥15 在win10下使用指纹登录时,界面上的文字最后一个字产生换行现象
  • ¥20 使用AT89C51微控制器和MAX7219驱动器来实现0到99秒的秒表计数,有开始和暂停以及复位功能,下面有仿真图,请根据仿真图来设计c语言程序
  • ¥15 51单片机 双路ad同步采样
  • ¥15 使用xdocreport 生成word