使用php和Regex我试图在最后<li>Valid in US</li>
之后的UL
中添加LI
,或者只是放在最后LI
之后。
调试时,我甚至无法获取最后UL
个标签的内容。当我执行var_dump时,此代码不会显示任何内容(我也尝试过preg_match_all
):
if (preg_match("/((<ul>(.*?)<\/ul>/s){3})", $desc, $WARRANTY) == true)
var_dump($WARRANTY);
这是$desc
:
<h1>Stuff</h1>
<p>description</p>
<hr />
<strong>Features & Benefits</strong>
<ul>
<li>feat</li>
<li>feat</li>
<li>feat</li>
</ul>
<hr />
<strong>Specifications</strong>
<ul>
<li>spec</li>
<li>spec</li>
<li>spec</li>
</ul>
<hr />
<strong>Warranty Information for a certain product</strong>
<ul>
<li>3 Years Parts</li>
<li>3 Years Labor</li>
</ul>
<div> <a href="/ahref" target="_blank">See more products from MFG </a></div>
答案 0 :(得分:1)
这不使用正则表达式,而且非常hacky,但有效。
if($pos = strripos($desc, '</ul>')) {
$desc= substr_replace($desc, "<li>Valid in US</li>\n</ul>" , $pos, strlen($desc));
}
echo $desc;
答案 1 :(得分:1)
如果您想将<ul>
代码与其中只有2个<li>
代码匹配,则可以使用此正则表达式:
<ul>\s*(<li>[^<]+</li>\s*){2}</ul>
我可以建议另一种添加第三个li标签的hacky方法:
使用此正则表达式:
<ul>\s*(?:<li>[^<]+</li>\s*){2}(<)/ul>
并将第一组中的匹配项替换为您的<li></li>
内容,后跟<
- 因为这是组(<)