① 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