我还在学习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的新手。
对此的正确解决方案的任何想法非常感谢 关心托尼
答案 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;验证......
更新:我看到你唯一的选择如下:
在呈现之前以字符串形式捕获页面输出,并按照Sudhir的建议使用str_replace或preg_replace对其进行过滤 - 因为您已经尝试过不成功。
抓住插件开发人员并请求他们更改代码。
直接编辑本地插件代码。