2011-04-16 209 views
0

我要匹配这个PHP - 正则表达式匹配的字符串和数字

{format i=34 ds=11 k=a /} 

$patern = "/\{format[a-z0-9=\s]?\/\}/i"; 

,但结果是空

在另外的问题:

string string {format mat=34/} string string string string string string string string 

string string {format mat=34/} string string string string string string string string 
  1. $模式=“/ {格式并[a-Z0-9 = \ S] * \ /}/I“;

    str_replace($ pattern,'test',$ strings);

    它将替换字符串中的所有格式,我只想替换第一个“格式”,并删除所有其他“格式”。怎么样 ?

  2. 当匹配结果是“{format mat = 34 /}”时。我想查找以“mat =”开头的字符串。

所以我有这个

$string = "{format mat=34/}"; 
$pattern = "/^mat=[0-9]*/"; // result is null 
$pattern = "/mat=[0-9]*/"; // ok, but also effect with "{format wrongformat=34/}" 

如何匹配开头的字符串 “垫=”

+0

因为您忘记了字符集的量词。只需用'*'替换'?' – zerkms 2011-04-16 16:05:37

+0

我有“\ s”的模式,它不符合空格吗? – Chameron 2011-04-16 16:06:29

+0

它确实;-)我发布后几秒钟后删除了我的评论;-) – zerkms 2011-04-16 16:08:08

回答

3

要匹配的东西多次,使用*?只是最多匹配一项:

"/\{format[a-z0-9=\s]*\/\}/i" 
+0

谢谢,它确实 – Chameron 2011-04-16 16:15:40