0

我想将以下标题文本$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 TitleItem2 Title

4

2 回答 2

1

添加g标志:

preg_match_all( '/sc-item title=\"([^\']+)\"/ig', $content, $matches, PREG_OFFSET_CAPTURE );
于 2013-11-08T08:20:42.020 回答
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 );

它具有相同的结果。

顺便说一句,我认为双引号转义是不必要的。

于 2013-11-08T08:21:52.677 回答