替换字符串并保持数字完好无损

时间:2014-10-16 20:56:06

标签: php html regex

我用php生成了这个表: 函数生成一个包含所有html代码的字符串:

<table><tr><td>1</td><td>2</td><td>3</td><td>4</td><td>5</td><td>6</td><td>7</td><td>8</td><td>9</td><td>10</td></tr><tr><td>2</td><td>4</td><td>6</td><td>8</td><td>10</td><td>12</td><td>14</td><td>16</td><td>18</td><td>20</td></tr><tr><td>3</td><td>6</td><td>9</td><td>12</td><td>15</td><td>18</td><td>21</td><td>24</td><td>27</td><td>30</td></tr><tr><td>4</td><td>8</td><td>12</td><td>16</td> .... </table>

现在我想将数字1到10设为黑色。我试图用'<td>(10|[0-9])</td>'替换<td style="font-weight: bold">THE-ORIGINAL-NUMBER</td>

提前Thanx!

P.S。我知道那里有很多similir的答案,但我无法弄清楚..那里有一个真正的noob友好的tut /正则表达式词汇表吗?我真的找不到现代的网站。

3 个答案:

答案 0 :(得分:1)

如果您匹配此正则表达式:

<td>(10|[0-9])</td>

您正在将10|[0-9]捕获到捕获组#1中。您可以在替换以下任一backreferences

时引用此参考
\1
$1

完整的PHP代码:

$html = '<td>1</td>';
$html = preg_replace(
  '~<td>(10|[0-9])</td>~',
  '<td style="font-weight: bold">\1</td>',
  $html
);

答案 1 :(得分:1)

使用此正则表达式

(?<=<td>)(10|[0-9])(?=<\/td>)

将组#1替换为:

<span class="BoldText">$1</span>

风格:

.BoldText {
    font-weight: bold;
}

答案 2 :(得分:0)

使用<b>可能很有用:

替换

'~<td>(10|[0-9])</td>~'

'<td><b>\1</b></td>'