我想将以下$content
中的标题文本放入数组中。所以我正在尝试使用preg_match_all
,但是我在表达式中犯了一些错误,因为它没有正确选择标题。
$content = '[sc-item title="Item1 Title"] Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum scelerisque posuere euismod. P [/sc-item][sc-item title="Item2 Title"] Lorem [/sc-item]';
$titles = array();
preg_match_all( '/sc-item title=\"([^\']+)\"/i', $content, $matches, PREG_OFFSET_CAPTURE );
if( isset($matches[1]) ){
//$titles = $matches[1];
var_dump($matches[1]);
}
在上面的例子中,我希望得到文字 Item1 Title 和 Item2 Title 。
答案 0 :(得分:1)
添加g
标志:
preg_match_all( '/sc-item title=\"([^\']+)\"/ig', $content, $matches, PREG_OFFSET_CAPTURE );
答案 1 :(得分:1)
尝试这种模式
preg_match_all( '/sc-item title="(.*?)"/i', $content, $matches, PREG_OFFSET_CAPTURE );
?意思是不贪心;或使用修饰符
preg_match_all( '/sc-item title="([^\']+)"/iU', $content, $matches, PREG_OFFSET_CAPTURE );
它有相同的结果。
顺便说一句,我认为双引号逃脱是不必要的。