如何正确格式化正则表达式模式以查找 ex 中 (* ''' 和 ''') 之间包含的字符串的匹配项。像这样的东西:
Lorem ipsum dolor sit amet, *'''Consectetur adipiscing elit'''. Quisque id diam sit amet
lectus semper blandit a sit amet nibh. *'''Phasellus fermentum nisi vitae lacus'''
scelerisque dapibus.
我尝试过这样的事情:
preg_match_all("/\* \'\'\'(.+?)\'\'\'/i", $new_content, $matches);
但我得到这样的结果:
array (size=2)
0 =>
array (size=2)
0 => string '* '''Consectetur adipiscing elit''''
1 => string '* '''Phasellus fermentum nisi vitae lacus''''
1 =>
array (size=2)
0 => string 'Consectetur adipiscing elit'
1 => string 'Phasellus fermentum nisi vitae lacus'
我几乎根本不使用正则表达式,所以我不知道我到底在做什么!
最佳答案
您可以使用以下模式:
$str = <<<EOF
Lorem ipsum dolor sit amet, *'''Consectetur adipiscing elit'''. Quisque id diam sit amet
lectus semper blandit a sit amet nibh. *'''Phasellus fermentum nisi vitae lacus'''
scelerisque dapibus.
EOF;
$pattern = "~\*'''(.*?)'''~s";
if(preg_match_all($pattern, $str, $matches)) {
var_dump($matches[1]);
}
输出:
array(2) {
[0] =>
string(27) "Consectetur adipiscing elit"
[1] =>
string(36) "Phasellus fermentum nisi vitae lacus"
}
说明:
~ is the pattern delimiter
\* asterisk has to be escaped
''' '''
() special matching group
.*? any char (except of the following ''', ? -> ungreedy)
''' '''
~ pattern delimter
s Option, includes newlines in .*
关于php - preg_match_all 模式创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16715319/