如何使用php匹配整个字符串

时间:2013-02-27 12:10:41

标签: php preg-match

我有两个数组:

 $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 个答案:

答案 0 :(得分:1)

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

preg_replace("/OPTION (\d+)/i", "<b class="option" id="$1">OPTION $1</b><hr>", $subject_string);

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

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

$search = array('/\bOPTION-1\b/', '/\bOPTION-2\b/', ... );