我将如何 preg_replace 以下内容?

发布于 2024-09-10 20:37:45 字数 588 浏览 7 评论 0原文

我有这段代码片段,我将在不同的地方替换它,我想知道如何编写模式来 preg_replace 它?谢谢!

<div class="leftside item1"> 
     <label for="item1">Item1</label> 
</div>

我想将其替换为:

<div class="leftside item1"> 
     <label for="item1">Item1</label> 
</div>
<div class="rightside item1_select"> 
<select class="item1_select" id="item1_select"> 
    <option value="">Select one</option> 
    <option value="1">1</option> 
    <option value="2">2</option> 
</select>

I've got this snippet of code that I will be replacing in various places and I was wondering how would I write the pattern to preg_replace it? Thanks!

<div class="leftside item1"> 
     <label for="item1">Item1</label> 
</div>

I'd like to replace it with:

<div class="leftside item1"> 
     <label for="item1">Item1</label> 
</div>
<div class="rightside item1_select"> 
<select class="item1_select" id="item1_select"> 
    <option value="">Select one</option> 
    <option value="1">1</option> 
    <option value="2">2</option> 
</select>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

在风中等你 2024-09-17 20:37:45

如果您想完全替换它,并且代码不变,请使用str_replace()。如果实际字符串有所不同,请不要使用正则表达式,因为它们确实不能与 XML/HTML 或 SGML 很好地混合,请使用解析器(例如,带有 XPath 查询和一些 Nodem 操作的 DOMDocument ) )。

$html = '<div class="leftside item1">
     <label for="item1">Item1</label>
</div>
<p>aa</p>
<div class="leftside item1">
     <label for="item1">Item1</label>
</div>';

$d = new DOMDocument();
$d->loadHTML($html);
$add = $d->createDocumentFragment();

$x = new DOMXPath($d);
$list = $x->query("//div[@class='leftside item1']");
if($list->length){
    foreach($list as $divnode){
        $add->appendXML('<div class="rightside item1_select">
          <select class="item1_select" id="item1_select">
            <option value="">Select one</option>
            <option value="1">1</option>
            <option value="2">2</option>
          </select>
        </div>');
        if($divnode->nextSibling instanceof DOMNode){
            $divnode->parentNode->insertBefore($add,$divnode->nextSibling);
        } else {
            $divnode->parentNode->appendChild($add);
        }
    }
}
echo $d->saveHTML();

If you want to totally replace it, and the code is constant, use str_replace(). If the actual string varies somewhat, do NOT use regexes, as they really don't mix well with XML/HTML or SGML, use a parser (DOMDocument for instance, with an XPath query and some nodem manipulations).

$html = '<div class="leftside item1">
     <label for="item1">Item1</label>
</div>
<p>aa</p>
<div class="leftside item1">
     <label for="item1">Item1</label>
</div>';

$d = new DOMDocument();
$d->loadHTML($html);
$add = $d->createDocumentFragment();

$x = new DOMXPath($d);
$list = $x->query("//div[@class='leftside item1']");
if($list->length){
    foreach($list as $divnode){
        $add->appendXML('<div class="rightside item1_select">
          <select class="item1_select" id="item1_select">
            <option value="">Select one</option>
            <option value="1">1</option>
            <option value="2">2</option>
          </select>
        </div>');
        if($divnode->nextSibling instanceof DOMNode){
            $divnode->parentNode->insertBefore($add,$divnode->nextSibling);
        } else {
            $divnode->parentNode->appendChild($add);
        }
    }
}
echo $d->saveHTML();
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文