2011-09-12 90 views
0

我的一些HTML文件包含字符串,如:PHP:簡單的正則表達式的問題

{foreach $any_kind_of_charaters} 
Any kind of string including "\n\r" and spaces here 
{/foreach} 

我想對他們適用PHP's preg_match_all並想返回一個不錯的array像印刷低於

Array 
(
    [0] => {foreach $any_kind_of_charaters} 
      Any kind of string including "\n\r" and spaces here 
      {/foreach} 
    [1] => any_kind_of_charaters 
    [2] => Any kind of string including "\n\r" and spaces here 
) 

這個表達式: /\{foreach\s+\$(.*)\}\s+(.*)\s+\{\/foreach\}/對我來說工作正常,
但我在{foreach}{/foreach}標記之間添加新行(\ n)時失敗。

您的幫助將不勝感激,謝謝。使用 「S」 MODIFIER

Array 
(
    [0] => {foreach $any_kind_of_charaters} 
     Any kind of string including "\n\r" and spaces here 
     {/foreach} 
    [1] => any_kind_of_charaters} 
     Any kind of string including "\n\r" and spaces here 
    [2] => 
) 

查找

後陣的arraysecond key包含不必要的數據,並arraylast key是完全空的。

回答

6

在正則表達式上設置s修飾符標誌。

http://php.net/manual/en/reference.pcre.pattern.modifiers.php


喜歡這個:/\{foreach\s+\$(.*)\}\s+(.*)\s+\{\/foreach\}/s < - 注意修改

+2

編輯我的答案 – thwd

+0

感謝花花公子,但新的數組不一樣,因爲它前面:( –

+1

是嘗試刪除'\ s''因爲現在一個點也會匹配,也可以嘗試'm'修飾符 – thwd