2012-03-27 25 views
0

我還在學習PHP,並反對什麼應該是一個比較簡單的問題來解決跑起來,但我堅持,所以任何幫助讚賞:)PHP頂替格式不正確的代碼

我有一個WordPress的網站是使用我不想禁用的插件。 我試圖讓在W3C驗證的索引頁面上的所有代碼,並設法這樣做,除了一行。

該插件在使用一些JavaScript注入一些代碼失敗驗證:

<link rel='stylesheet' id='flags/tpw_flags_css-css' href='http://www.xxx.xxx/wp-content/plugins/transposh-translation-filter-for-wordpress/widgets/flags/tpw_flags_css.css?ver=0.8.2' type='text/css' media='all' /> 

與「ID =‘標誌/ tpw_flags_css-CSS’」會發生驗證錯誤,因爲它含有一個反斜槓。 我認爲所有的誠實ID可以完全刪除。 我試過從javascript中刪除沒有成功,所以認爲我可能能夠做一個$ html字符串替換,但沒有喜悅那裏。

我試圖把雙方在HTML內容開始前的header.php和footer.php和HTML關閉後結束,但沒有喜悅的各種選項:

<?php $html = str_replace("id='flags/tpw_flags_css-css'", "", $html); ?> 

我聽說過的preg_replace,但PHP還是新手。

任何想法,以正確的解決方案,這個大加讚賞 問候託尼

+1

是100%有效的站點真的重要且引人注目?如果只是爲了這個ID,我不會打擾那麼多...... – 2012-03-27 07:37:24

+0

我對Wordpress並不熟悉......但插件安裝在本地目錄中嗎?你有編輯訪問插件代碼?如果是這樣,爲什麼不直接編輯插件代碼?只要記住在你應用插件更新時重新編輯它。你不能在Wordpress網站上的插件作者的注意下提出這個問題嗎? – Stefan 2012-03-27 08:52:43

回答

1

將這個東西之前是在你的header.php文件輸出:

ob_start('fix_id'); 

在functions.php文件將這個:

function fix_id($input) { 
    $input = str_replace("id='flags/tpw_flags_css-css'", "", $input); 
    return $input; 
} 
+1

太簡單了!另外,也許使用ob_get_contents()更簡單:http://www.php.net/manual/en/function.ob-get-contents.php。 ob_start(); $ html = ob_get_contents(); $ html = str_replace(...); – Stefan 2012-03-27 14:48:04

+0

是的 - 有一種可以使用的兄弟功能 - 就像你所建議的那樣。這是我看到解決問題的最快方式。 – mikevoermans 2012-03-27 15:03:15

+0

謝謝你,邁克,第一次像魅力一樣工作 – 2012-03-28 08:18:05

0

試試這個:

$newStr = preg_replace("/id=\'flags\/tpw_flags_css-css\'/", "", $str); 
+0

感謝Sudhir,麻煩是我實際上不能識別這個插入html的wp插件中的字符串,因此我試圖使用$ html但沒有效果。我對此不太瞭解,但是這個PHP Simple HTML DOM Parser http://simplehtmldom.sourceforge.net/實現這個? – 2012-03-27 08:21:01

0

如何使用jQuery清除ID屬性?可能是這樣的:

$(「link [id ='flags/tpw_flags_css-css']」)。attr('id','');

編輯:

如果你不知道什麼jQuery的,只是把這個頁面頭:

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>   
<script type="text/javascript">           
    $(document).ready(function() { 
     $("link[id='flags/tpw_flags_css-css']").attr('id', ''); 
    }); 
</script> 

注:其實,細想起來,你的頁面還是會不使用此方法進行驗證,因爲該源將是應用jQuery之前使用的HTML。

以下是100%可靠的方法:轉到w3c驗證服務的'通過直接輸入驗證'選項卡:http://validator.w3.org/#validate_by_input。剪切並將您的頁面源代碼放入文本框中。從鏈接標記中刪除id屬性。按「查詢」,以驗證...

UPDATE:你唯一的選擇,因爲我看到它,有以下幾種:

  1. 漁獲字符串頁面輸出它之前被渲染,並利用它進行過濾如Sudhir建議的str_replace或preg_replace--因爲您已經嘗試過不成功。

  2. 獲取插件開發人員並請求他們更改代碼。

  3. 直接編輯本地插件代碼。