我遇到了一个问题,而且,我不知道如何解决它。谷歌已经被我折磨了。
所以我需要在PHP中编写一个能够创建QRCodes的脚本。主要用于vCards。该脚本目前工作正常(几乎),即时使用此库:http://phpqrcode.sourceforge.net/
创建卡的代码非常简单:
<?php
error_reporting(E_ALL);
ini_set("display_errors", true);
include "phpqrcode/qrlib.php";
define('CRLF', "\r\n");
$text = "BEGIN:VCARD".CRLF;
$text .= "VERSION:4.0".CRLF;
foreach($_POST as $k => $p) {
print_r($k);
echo ":";
print_r($p);
echo "<br>";
$text .= $k.":".utf8_encode($p).CRLF;
}
$text .= "END:VCARD";
htmlentities($text);
str_replace(",", "\\,", $text);
QRcode::png($text, "/srv/www/htdocs/xxx/QRCode/files/qrcode.png", QR_ECLEVEL_M, 4, 2, true);
echo '<img src="files/qrcode.png">';
因此,QRcode正确打印并保存到我指定的文件中,这不是问题。 $text
的输出如下:
BEGIN:VCARD
VERSION:4.0
FN:Mathias Rokar
TEL:015158874391
EMAIL:mathiasrokar@gmx.de
URL:mathias-rokar.de
ADR;HOME:Ährenstraße 6;München;68475;DE
END:VCARD
所有内容都可以很好地编码到.php文件中,但是如果我扫描QRcode,ü
,ß
和Ä
就会变得无意义。 RFC 6350说版本3.0以后的每个vCard都使用utf-8,因此不存在任何问题...... utf8-encode
和htmlentities()
都不起作用。有人为此找到了解决方案吗?
E:这只是没有安全检查的测试代码。请你关心它,它将在最终版本中完成。