2012-11-29 79 views
3

我需要替換模板中的所有單詞,但這些單詞包含在{}和[]中。請幫助regexp php,我需要替換模板中的所有單詞

$content = '<div class="header header">{header} {header2} [header][/header]</div>'; 
$content = preg_replace("/(\s|\"|\')(^$)header(^$)(\s|\"|\')/is",'new_class',$content); 

輸出應該是以下幾點:<div class="new_class new_class">{header} {header2} [header][/header]</div>

+0

你可以發佈所需的輸出應該是什麼? 「所有的話」對我來說都是有霧的。 – complex857

+0

需要一個簡單的正則表達式 – user1862491

回答

0

這應該工作

$content = '<div class="header header">{header} {header2} [header][/header]</div>'; 
$content = preg_replace("/([\\s\"'])header(?=[\\s\"'])/is",'$1new_class',$content); 

這將替換所有的 「頭」,由要麼"'或空格包圍。

+0

@TimPietzcker當然,它的確如此。自己測試一下;-) –

+0

啊,是的,對不起,雙反斜槓扔掉了我的Python(它應該是'\ s',而不是'\\ s',但在PHP中,在字符串中有一些非常奇怪的轉義規則。 。) –

0
$result = preg_replace('/header(?![^{}[\]]*[\]}])/', 'new_class', $subject); 

替換headernew_class僅在下一後繼托架或支架是不是一個結束括號或支柱。

+0

非常感謝我很長一段時間與這種折磨 – user1862491