2012-10-04 87 views
1

虽然我可以在正则表达式中找到很多教程,但它仍然在我的掌握之上。我想创建的正则表达式很简单(通过我在某些示例中看到的内容来判断),但我根本无法弄清楚。需要正则表达式帮助

我想做一个简单的更换如下:

  1. 我保存在MySQL表图像元数据,与字段:ID,姓名,职务和alt。
  2. 在我的内容,我想写[[IMAGE:1:right]]content here[[image:2:left]].
  3. 我想要得到的ID(数字)和浮子(左或右)的比赛和替换图像整个字符串飘然向左或向右,检索由数据库表中的ID。

这里是我的尝试:

preg_match("/^\[\[image:(\d+):(left|right)\]\]+/i", "[[IMAGE:1:right]]content here[[image:2:left]]", $matches); 

这给我的回报:

Array ([0] => [[IMAGE:1:right]] [1] => 1 [2] => right) 

所以,找到一个,但我想它找到所有这些,因为我可能在帖子中有多个图片。据我所知,+应该匹配所有条目,并且我应该匹配大小写不敏感。看起来好像不区分大小写的方式起作用,但我只能得到一个回报。

有人能让我知道我在做什么错吗?

回答

0

这并不完全如此。那+只适用于它之前的令牌 - ]。你想用Perl语言进行匹配global,对于PHP(我认为你正在使用?)意味着调用函数preg_match_all()。您还必须删除^,因为只有一个图像出现在字符串的开头。

此外,[]在正则表达式的特殊字符 - 所以请逃脱他们,当你想要一个文字支架通过写\[\[\]\]

+0

我的歉意。我甚至没有注意到。在我的正则表达式中,我确实有逃脱的支架,它必须在原始文章中逃脱。所以这种非扭曲的bra is不是问题。删除^并更改为preg_match_all正是我所需要的。非常感谢! –