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


preg_replace, insert hashtags around desired value

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

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

id want:

<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>

我喜欢用preg替换麻木的标签,所以我认为REGEX看起来像这样:

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

数字(如果是数字,可以是1-3位),也可以是点。

无论如何,我不知道热预处理取代周围的价值:

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

将其插入值之后。

告诉我您对Reqular Expression Syntax 中的assertions的看法

<?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(?<=)

断言parens中的任何内容都不会成为替换的一部分,如果愿意,请将其视为检查

附言:刚刚测试过,效果不错,但可能有人想加入性能更好的产品。我在这个问题上不是大师