PHP替换格式错误的代码

时间:2012-03-27 07:29:17

标签: php validation str-replace

我还在学习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' />

验证错误发生在&#34; id =&#39; flags / tpw_flags_css-css&#39;&#34;因为它包含反斜杠。 我认为诚实地说,id可以完全删除。 我尝试从javascript中删除但没有成功,所以我想我可以用$ html字符串替换,但也没有喜欢。

我已经尝试在html内容开始之前在header.php和footer.php中添加各种选项,并在html关闭之后结束,但没有快乐:

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

我听说过preg_replace但仍然是PHP的新手。

对此的正确解决方案的任何想法非常感谢 关心托尼

3 个答案:

答案 0 :(得分: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 :(得分:0)

试试这个:

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

答案 2 :(得分:0)

如何使用jQuery清除id属性?这样的事情可能是:

$(&#34; link [id =&#39; flags / tpw_flags_css-css&#39;]&#34;)。attr(&#39; id&#39;,&#39;&#39 );

编辑:

如果您对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验证服务&#39;通过直接输入验证&#39;标签:http://validator.w3.org/#validate_by_input。将您的页面源切换到文本框中。从链接标记中删除id属性。按&#39;检查&#39;验证......

更新:我看到你唯一的选择如下:

  1. 在呈现之前以字符串形式捕获页面输出,并按照Sudhir的建议使用str_replace或preg_replace对其进行过滤 - 因为您已经尝试过不成功。

  2. 抓住插件开发人员并请求他们更改代码。

  3. 直接编辑本地插件代码。