所以我有这个字符串,它看起来像这样:
<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中的任何内容都不会成为替换的一部分,如果愿意,请将其视为检查。
附言:刚刚测试过,效果不错,但可能有人想加入性能更好的产品。我在这个问题上不是大师