2012-03-27 21 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. 直接编辑本地插件代码。