我想將JavaScript文件合併爲一個腳本標籤以減少對服務器的請求量。由於沒有插件,我想自己編寫代碼。不幸的是,CMS沒有中央功能來包含可以被覆蓋的javascript文件或類似的東西。所以我不得不搜索並替換源代碼中的腳本標籤,然後php會將outout輸出給用戶。在PHP中匹配每個腳本標籤與src屬性
要獲得鏈接,我寫這與SRC屬性的任何腳本標籤相匹配的正則表達式模式:
$scriptTagPattern = '#<script (?:.+)?src="([^"]+)">#';
我想是因爲有不同的腳本標籤,這應該是正確的。而我正從模板的源他們得到解析之前,所以在src屬性還可以包括PHP代碼是這樣的:
<script type="text/javascript" src="' . $options['baseurl'] . '/scripts/somejsfile.js"></script>
我的模式工作,但只有部分。 例如以下腳本匹配:
http://code.jquery.com/jquery-2.1.0.min.js
/scripts/yui/yuiloader-dom-event/yuiloader-dom-event.js
但下面不匹配:
<script type="text/javascript" src="scripts/read_marker.js?v=' . $options['simpleversion'] . '"></script>
我不明白爲什麼我的模式不匹配這裏。例如,yuiloader(參見上文實施例)具有以下源,其是類似於read_marker腳本:
<script type="text/javascript" src="' . Template::fetchStylevar("yuipath") . '/yuiloader-dom-event/yuiloader-dom-event.js"></script>
這也是我的第一個想法。但是這不起作用,解析器因爲大多數元素的src標籤內部的php代碼而be嘴。所以我認爲使用正則表達式會更好,而不是將每個變量替換爲其字符串值。 – Lion
你需要在你的模板中使用'<?php insert_script('...')?>'方法。在此方法中積累腳本,並在您的模板中使用。 – hek2mgl
是的,這將是最好的解決方案。但不幸的是,CMS使用自定義模板語言,其中不允許直接的php代碼。另一個大問題是模板必須改變。該插件應該稍後纔會發佈,因此它應該儘可能地容易使用。 – Lion