【问题标题】:Replacing all of the characters in between two html tags with whitespace in PHP用PHP中的空格替换两个html标签之间的所有字符
【发布时间】:2018-06-25 18:58:55
【问题描述】:

我正在尝试编写一些代码来用空格替换两个 html 标记(具体为 <del> 标记)之间的每个字符,但我正在努力使用 PHP 字符串方法。
代码应如何操作的示例:如果初始字符串是 "blahblah<del>blahblah</del>blahblah",理想情况下,结果将是 "blahblah blahblah",在两个 @ 之间有 8 个空格(<del> 标签之间的 8 个字符长度) 987654325@的

我正在为一个非常基本的服务器编写此代码,因此我无法访问任何额外的库/服务,例如 Node 等。

任何帮助将不胜感激!

编辑:<del> 标签之间的文本长度可变。它并不总是 8 个字符长。

【问题讨论】:

  • 你不限于这里的正则表达式。实际上,您可以使用 DOM 来做到这一点,获取所需的节点,然后将它们替换为包含与节点值长度相同数量的空格的文本节点。
  • 为什么不用js呢??
  • 这是针对 PHP 连接器脚本中的 SQL 查询进行处理的,因此我希望代码也可以在 PHP 中工作。我想如果最坏的情况发生,我可以使用 js

标签: php html regex


【解决方案1】:

您可以使用preg_replace_callback 拉取<del></del> 之间的内容。然后,您可以使用该返回来计算其中的字符数并将它们替换为原始字符串。应该这样做:

$string = 'blahblah<del>blahblah</del>blahblah';
echo preg_replace_callback('~<del>(.*?)</del>~', function($match) {
        $replace = str_repeat(' ', mb_strlen($match[1]));
        return $replace;
}, $string);

https://3v4l.org/ht22A

【讨论】:

  • 请确保您使用更新。我忘了preg_replace 已经在运行,所以使用use 会使输出加倍。
猜你喜欢
  • 2013-11-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-21
  • 2014-11-12
  • 2023-03-14
相关资源
最近更新 更多