用 '[@]' 动态替换 HTML Span,在 PHP 中使用 preg_replace 处理内部标签 [已关闭]

Dynamic Replacement of HTML Span with '[@]', handling Inner Tags with preg_replace in PHP [closed]

提问人:George Vladimir 提问时间:11/9/2023 最后编辑:Casimir et HippolyteGeorge Vladimir 更新时间:11/14/2023 访问量:34

问:


想改进这个问题吗?通过编辑这篇文章添加详细信息并澄清问题。

6天前关闭。

我正在尝试将整个跨度替换为 .问题是,如果 Innovation 名称周围有任何 html 标签,则在这种情况下输出应该是:.如果它周围没有任何 html 标记,则输出应为:.'[@]'<u>[@]</u>'[@]'

到目前为止,这是我的代码,我不想使用str_replace因为也许属性不会 100% 处于该位置,这就是我使用 preg_replace 的原因。

$html = '<span contenteditable="false" class="innovNameSearched"><u>Innovation name</u> <i id="removePlaceHolder"></i> </span>';
$replacement = '[@]'
$pattern = '/<span[^>]*\bclass="innovNameSearched"[^>]*>.*?<\/span>/i';
$modifiedHtml = preg_replace($pattern, $replacement, $html);

因此,为了更清楚起见,以下是一些输出示例:

'<span contenteditable="false" class="innovNameSearched"><u>Innovation name</u> <i id="removePlaceHolder"></i> </span>' 
  => output: '<u>[@]</u>' 
'<span contenteditable="false" class="innovNameSearched"><i>Innovation name</i> <i id="removePlaceHolder"></i> </span>' 
  => output: '<i>[@]</i>' 
'<span contenteditable="false" class="innovNameSearched">Innovation name <i id="removePlaceHolder"></i> </span>' 
  => output: '[@]'

没有必要使用preg_replace,我对其他解决方案持开放态度。

php 正则表达式 替换 preg-replace

评论

0赞 InSync 11/9/2023
强制性链接:不能使用正则表达式解析 [X]HTML。
1赞 The fourth bird 11/10/2023
现在这个跨度有 要么 或者 但是如果有更多的元素呢?或者,如果有其他嵌套元素怎么办?<i><u>

答: 暂无答案