2011-04-16 199 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