对于Regex专家来说,这可能是微不足道的。可悲的是,那不是我。
给出以下字符串:text:
这是一个段落和[callout]这是系统的测试[/ callout]。
我想使用preg_match()和/或preg_replace来创建以下
<div class="callout">this is a test</div>
这就是我现在的位置......
$content = 'Here is a paragraph and [callout]this is a test[/callout] of the system.';
$pattern = "/[callout](.*?)[\/callout]/s";
$matches = array();
preg_match($pattern, $content, $matches);
var_dump($match[0]);
......我遇到的问题是上面的模式似乎包含标签,即
[callout]this is a test[/test]
......我错过了什么?
TIA,
答案 0 :(得分:1)
尝试使用此正则表达式,
\[callout\](.*?)\[\/callout\]
来自this is a test
Here is a paragraph and [callout]this is a test[/callout] of the system
答案 1 :(得分:1)
你应该逃避方括号:
$pattern = "~\[callout\](.*?)\[/callout\]~s";
正如preg_match引用所说:
如果提供了匹配,那么它将填充搜索结果。
$matches[0]
将包含与完整模式匹配的文本,$matches[1]
将具有与第一个捕获的带括号的子模式匹配的文本,依此类推。
您可以在$matches[1]
中找到所需的文字。