在字符串中的每个 12 位数字后面添加 <br> 标签

问题描述 投票:0回答:2

我有一个字符串,需要在每个 12 位数字后面添加换行符

<br>

示例字符串:

1    NM    2951-2  S Sodium:  LN     144    mmol/L  mmol/L    135-145       F      201402150533      2    NM    2823-3  S Potassium:  LN     5.6    mmol/L  mmol/L    3.5-5.5    H      F      201402150533      3    NM    2075-0  S Chloride:  LN     103    mmol/L  mmol/L    95-110       F      201402150533

由于 12 位字符串是日期和时间戳,因此每次测试都会改变。

php string replace
2个回答
6
投票

这是使用正则表达式的好时机(请参阅preg_replace):

$str = preg_replace('/\d{12}/', '$0<br>', $str);

将每个 12 个数字的字符串替换为同一字符串,后跟

<br>


0
投票

为了防止在长度超过 12 位的数字中间注入

<br>
字符串的边缘情况,请使用字边界 (
\b
)。

对字符串末尾元字符使用否定前瞻,以防止在字符串末尾添加不必要的 br 标记。

通过使用

\K
,您不需要在替换字符串中引用完整的字符串匹配。

您应该消除 12 位数字 (

\s*
) 之后的所有空格,以便完美修剪输出字符串。

代码:(演示

$str = '1    NM    2951-2  S Sodium:  LN     144    mmol/L  mmol/L    135-145       F      201402150533      2    NM    2823-3  S Potassium:  LN     5.6    mmol/L  mmol/L    3.5-5.5    H      F      201402150533      3    NM    2075-0  S Chloride:  LN     103    mmol/L  mmol/L    95-110       F      201402150533';

echo preg_replace('/\b\d{12}\b(?!$)\K\s*/', '<br>', $str);

原始输出:

1    NM    2951-2  S Sodium:  LN     144    mmol/L  mmol/L    135-145       F      201402150533<br>2    NM    2823-3  S Potassium:  LN     5.6    mmol/L  mmol/L    3.5-5.5    H      F      201402150533<br>3    NM    2075-0  S Chloride:  LN     103    mmol/L  mmol/L    95-110       F      201402150533

HTML 渲染输出:

1    NM    2951-2  S Sodium:  LN     144    mmol/L  mmol/L    135-145       F      201402150533
2    NM    2823-3  S Potassium:  LN     5.6    mmol/L  mmol/L    3.5-5.5    H      F      201402150533
3    NM    2075-0  S Chloride:  LN     103    mmol/L  mmol/L    95-110       F      201402150533

如果要求是任意长度的数字,则模式可以简化为:

/\d+(?!$)\K\s*/
© www.soinside.com 2019 - 2024. All rights reserved.