如何编辑这个 preg_replace 来替换这个序列?

How to edit this preg_replace to replace this sequence?

我正在尝试使用

从 html 文件中的下面的标签中删除 _7935918
$str = preg_replace('/.*?(.*?)(_[0-9]{7})/', '', $html);

<span id="cld_tle_7935918" class="p_to" id="">

运气不好。 所以我的观点是将其保留为 <span id="cld_tle" class="p_to" id="">

我是不是漏掉了什么?

.*(.*?) 毫无意义:您希望使用该捕获组捕获什么?

相反,您可以明确要求您只想替换带引号的字符串。此外,我认为可以合理地预期位数可能并不总是恰好是 7。是否可以要求至少 2 位数,但也替换更多位数?

我建议这样做:

$str = preg_replace('/"([\w_]*?)_[0-9]{2,}"/', '""', $html);

您可以将 {2,} 增加到您认为最好的任何值。