我的CMS允许PHP关键字替换,我目前正在构建一种格式,以返回数据字段中第一个列出的项元素,该数据字段通常包含HTML无序列表,但通常可以包含段落等。
如果可能的话,我想使用正则表达式来匹配返回块中第一个列出的项元素li
,然后打印它。
一个严重的限制是,我无法使用^
字符,因为我的CMS(令人讨厌)将该字符用于修改功能。
到目前为止,我只提出:replace:<\/li>.*:</li></ul>
- 但这只是替换了返回块中第一个列出的项目的结束标记。我真正需要的是:
replace:anything_that's_not_first_li_element:nothing
我很欣赏这个问题是一个很长的问题,所以提前感谢所有建设性的回应。
答案 0 :(得分:0)
您可以将此正则表达式与s
标志一起使用。
(?<=<ul>).*?<li>.*?<\/li>
工作正则表达式示例:
PHP:
$list = '<ul>
<li>first</li>
<li>second</li>
<li>third</li>
<li>fourth</li>
</ul>';
preg_match('/(?<=<ul>).*?<li>.*?<\/li>/s', $list, $matches);
echo $matches[0];
输出:
<li>first</li>