php排除无效字查询,如何使用php最好地删除XHTML认为无效的unicode字符?

我经营一个旨在支持国际数学小组的论坛.我最近把它改为unicode以更好地支持国际角色.在调试此转换时,我发现并非所有unicode字符都被视为有效的X

HTML(相关网站似乎是

http://www.w3.org/TR/unicode-xml/).论坛软件在将帖子呈现给浏览器之前经历的步骤之一是XHTML验证/清理步骤.在那个阶段它应该删除XHTML不喜欢的任何unicode字符似乎是一个合理的想法.

所以我的问题是:

Is there a standard (or best) way of doing this in PHP?

(顺便说一下,论坛是用PHP编写的.)

我想故障安全将是一个简单的str_replace(如果这也是最好的,我是否需要做任何额外的事情以确保它与unicode正常工作?)但这将涉及我必须通过XHTML DTD(或上面-referenced W3 page)仔细找出str_replace的搜索部分列出的字符,所以如果这是最好的方法,有人已经这样做,以便我可以窃取,错误,复制,它?

(顺便说一下,导致问题的字符是U 000C,’formFeed’,(根据W3页面)是有效的HTML但无效的XHTML!)

我找到了一个可以做你想要的功能

phpedit.net.

我将发布归档函数,在PHPEdit.net上归功于ltp:

/**

* Removes invalid XML

*

* @access public

* @param string $value

* @return string

*/

function stripInvalidXml($value)

{

$ret = "";

$current;

if (empty($value))

{

return $ret;

}

$length = strlen($value);

for ($i=0; $i < $length; $i++)

{

$current = ord($value{$i});

if (($current == 0x9) ||

($current == 0xA) ||

($current == 0xD) ||

(($current >= 0x20) && ($current <= 0xD7FF)) ||

(($current >= 0xE000) && ($current <= 0xFFFD)) ||

(($current >= 0x10000) && ($current <= 0x10FFFF)))

{

$ret .= chr($current);

}

else

{

$ret .= " ";

}

}

return $ret;

}

总结

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值