繁体   English   中英

PHP正则表达式-如何提取模式的所有出现

[英]PHP regexp - how to extract all occurances of a pattern

我有一个包含多个WIKI类型标签的字符串。 例如[[TAG:4567]] 我需要从字符串中识别/提取所有标签,以便以后可以执行替换。

例如,对于此字符串:

this is a test [[TITLE]] of more test [[LINK:27654]]

我想要一个数组:

0: [[TITLE]]
1: [[LINK:27654]]

我以为PHP preg_match可能有用,但是它在regexp匹配之间返回了一堆额外的字符。 但是我认为它只适用于主题字符串中的一个匹配项。 这是我尝试的:

$subject = "this is a test [[TITLE]] of more test [[LINK:27654]]";
preg_match( '/(?<=\[\[)(.*)(?=\]\])/', $subject, $matches );
print_r($matches);

但这给了我:

Array ( 
    [0] => TITLE]] of more test [[LINK:27654 
    [1] => TITLE]] of more test [[LINK:27654 
) 

这不是我所需要的。 是否有提取标签的简单方法? 我真的很想避免遍历字符串并手动提取。

看起来更容易(也是正确的)正则表达式来解决这个问题是

/\[\[(.*?)\]\]/

在此处尝试此代码段

<?php

ini_set('display_errors', 1);
$subject = "this is a test [[TITLE]] of more test [[LINK:27654]]";
preg_match_all('/\[\[.*?\]\]/', $subject, $matches );
print_r($matches);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM