preg_replace,在所需值周围插入主题标签

时间:2013-11-30 15:44:40

标签: php regex

所以我有这个字符串,它看起来像这样:

<div style="display:none">231</div>.<div style="display:none">13</div>

id想:

<div style="display:none">231</div>#.#<div style="display:none">13</div>

或者像这样:

<div style="display:none">231</div>125<div style="display:none">13</div>

id想要

<div style="display:none">231</div>#125#<div style="display:none">13</div>

id就像一个preg替换,将这些标签放在麻木周围,所以我认为REGEX看起来像这样:

"<\/div>[.]|<\/div>\d{1,3}"

数字(如果是数字,可以是1-3位数字),或者它可以是一个点。

无论如何,我不知道如何更新以取代价值:

"<\/div>[.]|<\/div>\d{1,3}" replace: $0#

在值之后插入。

1 个答案:

答案 0 :(得分:0)

告诉我您对assertions

Reqular Expression Syntax的看法
<?php

header('Content-Type: text/plain');
$lookBehind = '\<div style\=\"display\:none\"\>231\<\/div\>';
$lookAhead = '\<div style\=\"display\:none\"\>13\<\/div\>';
$re = '~(?<='.$lookBehind.')(\.|\d+)(?='.$lookAhead.')~';
$str = '<div style="display:none">231</div>.<div style="display:none">13</div>';
echo preg_replace($re, '#$1#', $str).PHP_EOL;
$str = '<div style="display:none">231</div>125<div style="display:none">13</div>';
echo preg_replace($re, '#$1#', $str).PHP_EOL;
?>

Lookahead(?=)Lookbehind(?<=)

断言中的任何内容都不会成为替换的一部分,如果愿意,可以将其视为 check

PS:刚刚测试了它并且它可以工作,但是有人可能想要用更好的性能来填充它。我不是这个主题的大师