$re = '/\[\@if(not)?:([a-zA-Z0-9]+)(?:=(.*?))?\].*?\[\@endif:\2\]/s';
$str = '<!-- <h1>[!WLANSettings]</h1> -->
[@if:examplevar=notgiven]this text won\'t show[@endif:examplevar]
[@if:wlanena]
[@if:wlanauto]
<table id="wlanavail" class="colorrows inputtable">
<tr id="firstrow">
<th width="30px"></th>
<th width="240px">[!Name] (SSID)</th>
<th width="110px">[!Encryption]</th>
<th width="150px">[!SignalStrength]</th>
<th width="200px">[!MAC]</th>
</tr>
<tr id="loadingrow">
<td colspan=5 class="centertext"><img src="resources/loading.gif"
id="loadingWlanScan"></td>
</tr>
<tr>
<td></td>
<td colspan=4><input type="button" id="rescan"
value="[!Refresh]" style="width: 200px"></td>
</tr>
</table>
<p></p>
[@endif:wlanauto]
<table id="wlansettings" class="inputTable">
<tr id="wlannamerow" [@if:wlanauto]style="display: none;"[@endif:wlanauto]>
<td>[!WLANName]</td>
<td><input type="text" name="wlanname" id="wlanname"
[@if:wlanauto]value="[@wlanname]"[@endif:wlanauto] style="width: 309px;"></td>
</tr>
<tr>
<td>[!Password]:</td>
<td><input type="text" name="wlanpass" id="wlanpass"
style="width: 309px;"></td>
</tr>
<tr>
<td colspan="2" >
<input type="button"
[@if:wlanauto]id="manualcfg" name="manualcfg" value="[!ManualConfig]"[@endif:wlanauto]
[@ifnot:wlanauto]id="autocfg" name="autocfg" value="[!AutomaticConfig]"[@endif:wlanauto]
onclick="handleMultiform(event, this);" style="width: 180px;">
</td>
</tr>
<tr>
<td>
<input type="hidden" name="encinput" id="encinput" value=""></td>
<td id="wlaninfo"></td>
</tr>
</table>
[@ipsettings]
[@endif:wlanena]
[@ifnot:wlanena]
[!NoWLANDevicePluggedIn]
<p>
<input type="button" name="back" onclick="handleMultiform(event, this);" value="[!Back]" />
</p>
[@endif:wlanena]
';
preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);
// Print the entire match result
var_dump($matches);
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for PHP, please visit: http://php.net/manual/en/ref.pcre.php