【发布时间】:2025-12-03 11:30:01
【问题描述】:
我正在尝试从 $html 字符串中获取 {code} 标记之间的所有内容。
到目前为止,我已经写了这个,但这并没有按预期工作,只是替换了第一个 {code}
我也希望它适用于许多代码标签,但还没有到这一步。
<?php
$html = <<< EOT
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
<p>{code}My test code 1{/code}</p>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
EOT;
$startPos = strpos($html, '{code}');
$endPos = strpos($html, '{/code}');
if($startPos !== false && $endPos !== false){
$startPos += 6; # strlen('{code}')
$endPos += 7; # strlen('{/code}')
// get code
$code = substr($html, $startPos, $endPos);
// remove all code apart from start {code}
$html = substr($html, $startPos-6, $endPos);
// replace new code
$new_code = 'test';
$html = str_replace('{code}', $new_code, $html);
}
echo $html;
结果:-http://codepad.viper-7.com/T9sbbN
test我的测试代码1{/code}
Lorem ipsum dolor sit amet,consectetur adipiscing elit。
预期结果
Lorem ipsum dolor sit amet,consectetur adipiscing elit。
测试
Lorem ipsum dolor sit amet,consectetur adipiscing elit。
【问题讨论】:
-
预期结果是什么?
-
@Arian 刚刚添加了这个
-
如果有多个
{code}addasdf{/code}标签,您是否希望将它们全部替换为$new_Code? -
作为一个很好的例子,是的,它在实际应用程序中进行数据库查找。
标签: php