【发布时间】:2012-04-20 15:03:04
【问题描述】:
我正在制作一个 PHP 脚本来反转 HTML 文档中的文本,以处理转换错误的希伯来语 PDF。 (叹气:))
一切正常,但是脚本有一个非常奇怪的输出。只有一些字符,而不是保留希伯来字母,变成空白字符(那些带有问号的黑色菱形)。
我尝试了一些我可以在 SO 及其他地方找到的解决方案,但没有任何改变。或许你能启发我?
您可以在此处查看正在运行的脚本:pilau.phpnet.us/html_invert.php,这是完整的源代码:
<!DOCTYPE html>
<html lang="he-IL">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<form action="html_invert.php" method="post" enctype="application/x-www-form-urlencoded">
<textarea id="html_code" name="html_code" rows="30" cols="80"><?php
if (isset($_POST['html_code']))
{
function invert_string ($str) {
$new_str = '';
$i = strlen($str);
while ($i > 0) {
$new_str .= substr($str, --$i, 1);
}
return '>'.$new_str.'<';
}
echo htmlspecialchars(preg_replace('/>(\s*.*\s*)</imUue', 'invert_string("$1")', stripslashes($_POST['html_code'])));
}
else { echo 'paste your text here'; }
?></textarea>
<br />
<input type="submit" value="Process HTML" />
</form>
</body>
</html>
【问题讨论】:
-
您需要
mb_substr和mb_strlen以实现多字节安全。 -
另外,我不认为
stripslashes是 UTF 安全的。 -
我没有从链接中得到任何输出..
-
您是否要直接从 PDF 转换文本?如果是这样,那是你的问题。 PDF 内部不是原始形式的可读文本,您必须对其使用解析器,对它的支持有限。
-
@Wooble:@Matthew:谢谢!我使用了
mb_substr('UTF-8')和mb_strlen('UTF-8'),并用这个正则表达式替换了stripslashes():preg_replace(array('/\x5C(?!\x5C)/u', '/\x5C\x5C/u'), array('','\\'), $_POST['html_code']),它现在可以工作了,检查一下我们的 :) @showerhead:当然不是,我让谷歌将它转换为 HTML对我来说——我能找到的最好的免费方法。但随后它反转了所有文本。 @RyanS:对不起,伙计,我真的不知道为什么-它对我有用。不管怎么说,还是要谢谢你。如何将此问题标记为已回答?
标签: php unicode substr strlen stripslashes