① php中如何将从数据库查询的几个数组放到一个新的数组中
php自带数组合并函数$arr = array_merge($arr1, $arr2, $arrc);
array_merge语法:array_merge(array1,array2,array3...)
② tcpdf msyh.php生成微软雅黑为什么无效
这种方式生成的PDF文件的优点是:文件体积小,生成快速。但也有缺点是,没有嵌入中文字体,只限于安装了Adobe Reader之后才能正常显示。那万一用户使用的是FoxIt Reader或者是Linux操作系统呢?显示效果就不一样了。因此,为了保证生成的PDF文件在任何环境下都有同样的显示效果,嵌入字体是必需的。
Windows下有很多中文字体,但是我们要用在TCPDF中的中文字体有下面几个要求:
< View plain text >
php
* 支持Unicode,因为TCPDF支持的是Unicode;
* 体积越小越好;
* 最好是也支持繁体中文;
这样看来,微软雅黑以及方正的一些字体都符合要求。但是他们都是商业字体,而且个头都不小,以微软雅黑为例,msyh.ttf 文件就超过10M,如果使用它,生成的PDF文件体积也会很大。
综合考虑,我觉得”Droid Sans Fallback”字体符合要求:
< View plain text >
php
* 首先它是免费字体;
* 其次它也是Unicode编码,支持简体繁体中文以及日文韩文等等;
* 然后它的体积很小,不超过5M。
然而TCPDF不支持TTF字体文件,因此我们先将它转换成TCPDF支持的格式,然后再使用。在TCPDF目录下有个fonts子目录,这个子目录下又有个utils,这里面带有一个字体转换工具ttf2ufm.exe。下面是转换的步骤:
在网上很容易找到Droid Sans Fallback字体的下载链接,因此在这里就没有必要多做描述了。我们把下载到的 DroidSansFallback.ttf 复制到 TCPDF\\fonts\\utils 下面,然后打开Windows的命令行,切换到此路径下,输入如下命令:
< View plain text >
php
D:\\www\\tcpdf\\fonts\\utils>ttf2ufm -a -F DroidSansFallback.ttf
等待一段时间,等到命令行窗口显示
< View plain text >
php
"Finished - font files created"
之后,可以发现此目录下生成了DroidSansFallback.afm,DroidSansFallback.t1a 和 DroidSansFallback.ufm 这三个文件。
在命令行中输入
< View plain text >
php
"C:\\Program Files\\WAMP\\PHP5\\php.exe" -q makefont.php DroidSansFallback.ttf DroidSansFallback.ufm
说明:这里的”C:\\Program Files\\WAMP\\PHP5\\php.exe”为php.exe文件所在的路径,请根据实际情况输入。回车运行之后,稍等片刻,命令行窗口中会提示
< View plain text >
php
Font definition file generated
至此大功告成。将生成的droidsansfallback.php、droidsansfallback.z以及droidsansfallback.ctg.z这三个文件复制到 TCPDF\\fonts 下面即可。
打开example_038.php文件,将
< View plain text >
php
$pdf->SetFont(\'stsongstdlight\', \'\', 20);
修改为
< View plain text >
php
$pdf->SetFont(\'droidsansfallback\', \'\', 20);
这样就能够调用我们刚才生成的字体,再访问 http://localhost/tcpdf/examples/example_038.php 就可以看到重新生成的PDF文档。
③ 求php过滤ios的Emoji表情的方法,如果字符串中包含Emoji表情就删除。
网上已经有开源的了!http://code.iamcal.com/php/emoji/ 你参考下
iOS 5.0之前,苹果都是采用3个字节来承接 emoji 表情,Java 的普通 char 可以支持显示。但 iOS 5.0 之后, 苹果升级了系统自带的 emoji 表情输入法,用的 Unicode 6 标准来统一,是采用4个 bytes 来承接一个 emoji 表情。如果不做处理的话,这种表情直接存储到 mysql5.5 以下的数据库是会报错的。就像这两个表情一样:口口, 在 Windows 8 以下估计都不支持显示,可能会显示成框框,可能压根就是空白, 你可以在 Mac 中使用Safari 浏览器中,就可以看到。经过测试,在 Mac 就算用 Chrome 浏览器(Version 25.0.1364.172)也是不行的。
这种数据在 Mysql 5.5 之前,UTF-8 支持1-3个字节的编码,从 Mysql5.5 开始后,可以支持4个字节的 UTF 编码,但要特殊标记。修改 Mysql 相应存储字段为 utf8mb4 。修改语句如下:
1 ALTER TABLE table_name
2 MODIFY COLUMN content varchar(500) CHARACTER
3 SET utf8mb4 COLLATE utf8mb4_unicode_ci
4 DEFAULT NULL COMMENT 'content of message';
在某种业务情景下,我们可以选择过滤掉这种“非法”的字符。我采用的方式是,在字符上面做操作,下面是Java示例代码,核心的代码附上,应该是 无法直接下载就能够编译,你得小小的做一些微调,没有额外的依赖:
01 public class EmojiFilter {
02
03 /**
04 * 检测是否有emoji字符
05 * @param source
06 * @return 一旦含有就抛出
07 */
08 public static boolean containsEmoji(String source) {
09 if (StringUtils.isBlank(source)) {
10 return false;
11 }
12
13 int len = source.length();
14
15 for (int i = 0; i < len; i++) {
16 char codePoint = source.charAt(i);
17
18 if (isEmojiCharacter(codePoint)) {
19 //do nothing,判断到了这里表明,确认有表情字符
20 return true;
21 }
22 }
23
24 return false;
25 }
26
27 private static boolean isEmojiCharacter(char codePoint) {
28 return (codePoint == 0x0) ||
29 (codePoint == 0x9) ||
30 (codePoint == 0xA) ||
31 (codePoint == 0xD) ||
32 ((codePoint >= 0x20) && (codePoint <= 0xD7FF)) ||
33 ((codePoint >= 0xE000) && (codePoint <= 0xFFFD)) ||
34 ((codePoint >= 0x10000) && (codePoint <= 0x10FFFF));
35 }
36
37 /**
38 * 过滤emoji 或者 其他非文字类型的字符
39 * @param source
40 * @return
41 */
42 public static String filterEmoji(String source) {
43
44 if (!containsEmoji(source)) {
45 return source;//如果不包含,直接返回
46 }
47 //到这里铁定包含
48 StringBuilder buf = null;
49
50 int len = source.length();
51
52 for (int i = 0; i < len; i++) {
53 char codePoint = source.charAt(i);
54
55 if (isEmojiCharacter(codePoint)) {
56 if (buf == null) {
57 buf = new StringBuilder(source.length());
58 }
59
60 buf.append(codePoint);
61 } else {
62 }
63 }
64
65 if (buf == null) {
66 return source;//如果没有找到 emoji表情,则返回源字符串
67 } else {
68 if (buf.length() == len) {//这里的意义在于尽可能少的toString,因为会重新生成字符串
69 buf = null;
70 return source;
71 } else {
72 return buf.toString();
73 }
74 }
75
76 }
77 }
还有优化的空间,但是已经能够满足大多数情况的需求,附上单元测试(JUnit4):
01 public class EmojiFilterTest {
02
03
04 /**
05 * 测试emoji表情
06 */
07 @Test
08 public void fileterEmoji() {
09 String s = "<body>口口213这是一个有各种内容的消息, Hia Hia Hia !!!! xxxx@@@...*)!" +
10 "(@*$&@(!)@*)!&$!)@^%@(!. 口口口], ";
11 String c = Utils.filterEmoji(s);
12 assertFalse(s.equals(c));
13 String expected = "<body>213这是一个有各种内容的消息, Hia Hia Hia !!!! xxxx@@@...*)" +
14 "!(@*$&@(!)@*)!&$!)@^%@(!. ], ";
15 assertEquals(expected, c);
16 // assertSame(c, expected);
17 assertSame(expected, "<body>213这是一个有各种内容的消息, Hia Hia Hia !!!! xxxx@@@...*)" +
18 "!(@*$&@(!)@*)!&$!)@^%@(!. ], ");
19 assertSame(c, Utils.filterEmoji(c));
20 }
21
22 }
④ PHP中,从一个类如何调用其他文件的方法
你对面向对象编程的概念还不是很清楚,一个类要想去调用一个不属于本来的方法或者变量,要么继承父类,要么连接一个接口。而继承与连接的对象势必是一个类。
你再common.php中定义的不是一个类,是不可能直接由 class util直接引用的,你可以试着把common.php的变量和方法封装成一个类 然后由 class util继承后来实现方法的调用操作。
⑤ 高分求代码错误Fatal error: Call to undefined function _() in D:\wwwroot\libs\utils.php on line 24
是你数组键值的问题
你把数组写成这样的:
-1 => "_(irrelevante)"
依次类推
OK。问题解决:)
试一试
⑥ 大神看看这个代码在php怎么加密 啊
首先 这不是php 代码,如果想加密的话,可以把他当 字符串 用 rsa 加密,客户端获取后,根据 rsa key 解密即可
⑦ 在数组中搜索给定的值,如果成功则返回首个相应的键名
array_search
(PHP 4 >= 4.0.5, PHP 5, PHP 7)
array_search — 在数组中搜索给定的值,如果成功则返回首个相应的键名
说明
array_search ( mixed $needle , array $haystack [, bool $strict = false ] ) : mixed
大海捞针,在大海(haystack)中搜索针( needle 参数)。
参数
needle
搜索的值。
注意:
如果 needle 是字符串,则比较以区分大小写的方式进行。
haystack
这个数组。
strict
如果可选的第三个参数 strict 为 true,则 array_search() 将在 haystack 中检查完全相同的元素。 这意味着同样严格比较 haystack 里 needle 的 类型,并且对象需是同一个实例。
返回值
如果找到了 needle 则返回它的键,否则返回 false。
如果 needle 在 haystack 中出现不止一次,则返回第一个匹配的键。要返回所有匹配值的键,应该用 array_keys() 加上可选参数 search_value 来代替。
警告
此函数可能返回布尔值 false,但也可能返回等同于 false 的非布尔值。请阅读 布尔类型章节以获取更多信息。应使用 === 运算符来测试此函数的返回值。
更新日志
版本 说明
5.3.0 As with all internal PHP functions as of 5.3.0, array_search() returns null if invalid parameters are passed to it.
⑧ php 如何写一个webservice ecshop的一个登录接口,第一次写,希望讲的祥细点,能给贴上源码更加感谢。
可以根据这个改啊!!
1:首先我们必须配置好qq联合登陆的配置文件。还有公共函数,我们将他放到ecshop的qq目录下面。
include_once(ROOT_PATH . 'qq/comm/config.php');
include_once(ROOT_PATH . 'qq/comm/utils.php');
include_once(ROOT_PATH . 'qq/oauth/get_request_token.php');
其次我们要验证下签名的合法性。
if (!is_valid_openid($_REQUEST["openid"], $_REQUEST["timestamp"], $_REQUEST["oauth_signature"]))
{
//demo对错误简单处理
echo "###invalid openid\n";
echo "sig:".$_REQUEST["oauth_signature"]."\n";
exit;
}
2:获取ecshop联合登陆qq的授权信息
$access_str = get_access_token($_SESSION["appid"], $_SESSION["appkey"], $_REQUEST["oauth_token"], $_SESSION["secret"], $_REQUEST["oauth_vericode"]);
//echo "access_str:$access_str\n";
$result = array();
parse_str($access_str, $result);
3:我们通过处理,得到qq联合登陆返回的数据进行json还原
$info = get_qq_user_info($_SESSION["appid"], $_SESSION["appkey"], $_SESSION["token"], $_SESSION["secret"], $_SESSION["openid"]);
4:分解参数,然后通过以下函数,完成qq联合登陆的ecshop注册和登陆
if(register($qqname, $qqname, $email, array()))
if($user->login($qqname, $qqname,isset($_POST['remember'])))
可以根据这个改啊!!
⑨ PHP网站怎么连接到数据库
<?php
$mysql_server_name='localhost';
$mysql_username='root';
$mysql_password='12345678';
$mysql_database='mycounter';
$conn=mysql_connect($mysql_server_name,$mysql_username,$mysql_password,$mysql_database);
$sql='CREATE DATABASE mycounter DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci;
';
mysql_query($sql);
$sql='CREATE TABLE `counter` (`id` INT(255) UNSIGNED NOT NULL AUTO_INCREMENT ,`count` INT(255) UNSIGNED NOT NULL DEFAULT 0,PRIMARY KEY ( `id` ) ) TYPE = innodb;';
mysql_select_db($mysql_database,$conn);
$result=mysql_query($sql);
//echo $sql;
mysql_close($conn);
echo "Hello!数据库mycounter已经成功建立!";
⑩ 解析php类的注册与自动加载
本篇文章是对php类的注册与自动加载进行了详细的分析介绍 需要的朋友参考下工程目录如下 将需要注册的类放在一个数组中
复制代码 代码如下: <?php final class Utils { private function __construct() { } public static function getClasses($pre_path = / ) { $classes = array( DBConfig => $pre_path DBConfig/DBConfig php User => $pre_path Model/User php Dao => $pre_path Dao/Dao php UserDao => $pre_path Dao/UserDao php UserMapper => $pre_path Mapping/UserMapper php ); return $classes; } } ?>注册数组 注意 步骤 中的类的路径都是相对于init php而言的 不是相对于Utils而言的 这是因为我们通过init php里的自动加载函数spl_autoload_register来require类的
复制代码 代码如下: <?php require_once /Utils/Utils php ; final class Init { /** * System config */ public function init() { // error reporting all errors for development (ensure you have // display_errors = On in your php ini file) error_reporting ( E_ALL | E_STRICT ); mb_internal_encoding ( UTF ); //registe classes spl_autoload_register ( array ($this loadClass ) ); } /** * Class loader */ public function loadClass($name) { $classes = Utils::getClasses (); if (! array_key_exists ( $name $classes )) { die ( Class " $name " not found ); } require_once $classes [$name]; } } $init = new Init (); $init >init (); ?>本例中在使用处test php里require init php
复制代码 代码如下: lishixin/Article/program/Java/JSP/201311/20464