我有这段代码
$regex = '/{tip(?:\s+class\s*=\s*"([a-zA-Z\s]+)")?}([^{]*){\/tip}/';
$matches = null;
preg_match_all($regex, $article, $matches);
if(is_array($matches)) {
foreach ($matches as $match) {
$article = preg_replace($regex, '<span class="tooltip $1"><i>?</i><em>$2</em></span>', $article);
}
}
所以我正在寻找{tip} tip text {/tip}
或{tip class="someClass"} tip text{/}
并替换它。它的工作正常,但根据类别会有不同的输出。我需要这样的东西:
if (strpos($match, 'class') !== false) {
output
} else {
$class = $match[0];
if ($class == 'sticked') {
other output
}
}
但是我不知道如何将类提取到变量,也匹配是一个结果数组,所以每次类都会在不同的位置。
答案 0 :(得分:0)
试试这个:
$regex = '/{tip\s*([a-z]*)=?"?\'?([^\'"]*)"?\'?\s*}([^{]*){\/tip}/';
通过这种方式,您可以使用\ s *在单词或双引号之前或之后使用任意数量的空格提取类属性,使用&#34;?&#39;?
编辑使用/不使用类定义。此模式将返回正在使用的属性,因此,如果&#34; class&#34;错误拼写。