-3

我有两个数组:

 $search = array('A/OPTION-1/z','/OPTION-2/','/OPTION-3/','/OPTION-4/','/OPTION-5/','/OPTION-6/','/OPTION-7/','/OPTION-8/',
            '/OPTION-9/','/OPTION-10/','/OPTION-11/','/OPTION-12/','/OPTION-13/','/OPTION-14/','/OPTION-15/','/OPTION-16/','/OPTION-17/',
            '/OPTION-18/','/OPTION-19/');

并想替换为:

$replace = array('<b class="option" id="1" >OPTION 1</b><hr>',
            '<b class="option" id="2">OPTION 2</b><hr>',
            '<b class="option" id="3">OPTION 3</b><hr>',
            '<b class="option" id="4">OPTION 4</b><hr>',
            '<b class="option" id="5">OPTION 5</b><hr>',
            '<b class="option" id="6">OPTION 6</b><hr>',
            '<b class="option" id="7">OPTION 7</b><hr>',
            '<b class="option" id="8">OPTION 8</b><hr>',
            '<b class="option" id="9">OPTION 9</b><hr>',
            '<b class="option" id="10">OPTION 10</b><hr>',
            '<b class="option" id="11">OPTION 11</b><hr>',
            '<b class="option" id="12">OPTION 12</b><hr>',
            '<b class="option" id="13">OPTION 13</b><hr>',
            '<b class="option" id="14">OPTION 14</b><hr>',
            '<b class="option" id="15">OPTION 15</b><hr>',
            '<b class="option" id="16">OPTION 16</b><hr>',
            '<b class="option" id="17">OPTION 17</b><hr>',
            '<b class="option" id="18">OPTION 18</b><hr>',
            '<b class="option" id="19">OPTION 19</b><hr>');

回应是:

 OPTION-1 AX
 OPTION-11 AX
 OPTION-12 AX
 OPTION-13 AX

问题是当我替换 OPTION-1 时它工作正常,但是当我替换 OPTION-11 时,它将 OPTION-11 替换为 OPTION-1,它应该是 OPTION-11。

4

4 回答 4

1

您可以使用此一般规则来捕获任何OPTION X字符串并替换它们:

preg_replace("/OPTION (\d+)/i", "<b class="option" id="$1">OPTION $1</b><hr>", $subject_string);
于 2013-02-27T12:16:18.733 回答
0

尝试更改“替换”的顺序。首先运行替换具有更大数字的选项。

于 2013-02-27T12:14:56.657 回答
0

我打算也建议改变数组的顺序

您可以使用http://php.net/manual/en/function.array-reverse.php来执行此操作。

于 2013-02-27T12:17:42.507 回答
0

使用单词边界(即。\b):

$search = array('/\bOPTION-1\b/', '/\bOPTION-2\b/', ... );
于 2013-02-27T12:20:09.843 回答