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 想通过pywinauto自动电机应用程序按钮,但是找不到应用程序按钮信息
  • ¥15 MATLAB中streamslice问题
  • ¥15 如何在炒股软件中,爬到我想看的日k线
  • ¥15 51单片机中C语言怎么做到下面类似的功能的函数(相关搜索:c语言)
  • ¥15 seatunnel 怎么配置Elasticsearch
  • ¥15 PSCAD安装问题 ERROR: Visual Studio 2013, 2015, 2017 or 2019 is not found in the system.
  • ¥15 (标签-MATLAB|关键词-多址)
  • ¥15 关于#MATLAB#的问题,如何解决?(相关搜索:信噪比,系统容量)
  • ¥500 52810做蓝牙接受端
  • ¥15 基于PLC的三轴机械手程序