if (version_compare(PHP_VERSION, ‘5.0.0’, ‘<‘) ) exit(“您的PHP版本太舊n”);[……]
標籤: php
PHP 解決 Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in
解決方法一:
停用PHP顯示錯誤訊息
這絕對不是個好方法,我個人是不推薦使用,雖然這方法一勞永逸,但在開發PHP時,你將會知道錯誤訊息有多麼美好,Debug時才不會像無頭蒼蠅般,除非程式已經在一個很穩定的階段,不然非必要,不要關閉全部錯誤訊息,還是留給程式可以去設定是否顯示錯誤訊息的彈性。
以下介紹幾種PHP停用錯誤訊息的方法:
在PHP文件中加入,停用PHP錯誤訊息
如果還是出現錯誤訊息,請試下列方法
在.htaccess檔案中加入下面這一行 ( Apache專用 )
如果還是出現錯誤訊息,請試下列方法
在 PHP.ini 中找到 display_errors 這一行,沒這一行則添加,將值改為off。
解決方法二:
PHP排除特定錯誤層級
如果短期間沒打算繼續升級的話,還是可以在PHP5.5 使用 mysqli_connect() ,但停用所有錯誤訊息好像又太極端,下面這方法可以設定錯誤訊息級別,隱藏某些特定的錯誤級別,選擇排除顯示某指定錯誤級別,排除的錯誤級別將不會顯示在錯誤訊息上,排除E_DEPRECATED,mysql_connect()就可以繼續撐拉。
以下例子顯示所有錯誤,除了下列這幾個錯誤級別:
E_DEPRECATED棄用E_NOTICE注意E_WARNING警告E_STRICT嚴格
解決方法三:
mysql_connect 改用 mysqli_connect()
這是最正規的方式拉,也是最推薦的,就是乖乖升級吧,雖然升級的過程中會有一段陣痛,有點痛,以下提供很簡單的範例。
mysqli_connect() 範例如下
mysqli_connect() 建表SQL如下
[……]
PHP Deprecated: Function set_magic_quotes_runtime() is deprecated 解決方法
set_magic_quotes_runtime()於 PHP5.3後棄用
在 PHP.net 官方文件中有提到,set_magic_quotes_runtime()於PHP5.3已經棄用,雖然不會造成Fatal error而中斷程式,但會發送E_DEPRECATED的過時警告
Deprecated: Function set_magic_quotes_runtime() is deprecated
替代方案:
set_magic_quotes_runtime(0);
意思同上,以下列方法替代棄用的set_magic_quotes_runtime()
ini_set("magic_quotes_runtime", 0);
PHP 5.4起,使用此函數會拋出Fatal error,終止程式運行
Fatal error: Uncaught Error: Call to undefined function set_magic_quotes_runtime()
相容性:
把舊版本程式有使用到
set_magic_quotes_runtime(0);
都改為就可以了
ini_set("magic_quotes_runtime", 0);
@set_magic_quotes_runtime(0);
參考資料:
[……]
PHP 正規表達式,清除隱藏字元,整齊排列輸出的字元
有些隱藏字元會被我們加在字串中,
不過這樣好像太乾淨了齁,
修改一下不要拿掉斷行n,
echo preg_replace(‘/[rt]/’, ‘ ‘, $xml);
[……]
PHP simplexml to Array XML 轉 Array
引用網址
https://gist.github.com/tfnet/2037443
PHP 使用 simplexml_load_string() 解析 XML 資料,
要一直 $node->children() 一個節點一個節點的取,這樣用實在很麻煩,
如果能一次把 XML 結構資料轉成 Array 在讀裡面的資料就非常好用了,
網路查了一下看到神人分享的function,完全用原本的XML結構打造成Array,非常好用,
該網址提供的程式碼較適用於Class中,我做了一點小小的修改,
原版本請連文章上方引用網址,修改後版本請於文章下方 Download
<?php
/**
* Converts a simpleXML element into an array. Preserves attributes.<br/>
* You can choose to get your elements either flattened, or stored in a custom
* index that you define.<br/>
* For example, for a given element
* <code>
* <field name=”someName” type=”someType”/>
* </code>
* <br>
* if you choose to flatten attributes, you would get:
* <code>
* $array[‘field’][‘name’] = ‘someName’;
* $array[‘field’][‘type’] = ‘someType’;
* </code>
* If you choose not to flatten, you get:
* <code>
* $array[‘field’][‘@attributes’][‘name’] = ‘someName’;
* </code>
* <br>__________________________________________________________<br>
* Repeating fields are stored in indexed arrays. so for a markup such as:
* <code>
* <parent>
* <child>a</child>
* <child>b</child>
* <child>c</child>
* …
* </code>
* you array would be:
* <code>
* $array[‘parent’][‘child’][0] = ‘a’;
* $array[‘parent’][‘child’][1] = ‘b’;
* …And so on.
* </code>
* @param simpleXMLElement $xml the XML to convert
* @param boolean|string $attributesKey if you pass TRUE, all values will be
* stored under an ‘@attributes’ index.
* Note that you can also pass a string
* to change the default index.<br/>
* defaults to null.
* @param boolean|string $childrenKey if you pass TRUE, all values will be
* stored under an ‘@children’ index.
* Note that you can also pass a string
* to change the default index.<br/>
* defaults to null.
* @param boolean|string $valueKey if you pass TRUE, all values will be
* stored under an ‘@values’ index. Note
* that you can also pass a string to
* change the default index.<br/>
* defaults to null.
*
* @return array the resulting array.
*/
function simpleXMLToArray($xml,$attributesKey=NULL,$childrenKey=NULL,$valueKey=NULL)
{
if($childrenKey && !is_string($childrenKey)){
$childrenKey = ‘@children’;
}
if($attributesKey && !is_string($attributesKey)){
$attributesKey = ‘@attributes’;
}
if($valueKey && !is_string($valueKey)){
$valueKey = ‘@values’;
}
$return = array();
$name = $xml->getName();
$_value = trim((string)$xml);
if(!strlen($_value)){
$_value = null;
};
if($_value!==null){
if($valueKey){
$return[$valueKey] = $_value;
}
else{$return = $_value;
}
}
$children = array();
$first = true;
foreach($xml->children() as $elementName =&g[……]
PHP POST RAW 使用 cURL
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, “http://yourdomain.com.tw” );
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt($ch, CURLOPT_POST, 1 );
curl_setopt($ch, CURLOPT_HTTPHEADER, array(‘Content-Type: text/plain’));
curl_setopt($ch, CURLOPT_POSTFIELDS, “POST RAW 資料” );
$result=curl_exec ($ch);
引用資料
[……]
PHP big5轉utf8不要用iconv(),iconv這個函數,用mb_convert_encoding
不要以為big5轉utf8就用iconv()這麼簡單
big5有很多字是沒有收錄的:
測試:
用法:
原文出自:
[……]
PHP 數字字串取奇數或偶數, 奇數/偶數如何判斷
奇數及偶數判斷我想應該很多方法
我這邊提供一種方法判斷
就是數值除2取餘數的方式
//偶數餘0
2/2 餘 0
4/2 餘 0
6/2 餘 0
//奇數餘1
1/2 餘 1
3/2 餘 1
5/2 餘 1
運算子
在PHP裡取餘數的運算子為 %
echo 6%2 ; //結果 0
應用
//數字字串轉數字陣列
$str_arr = str_split(‘14063070084’);
//取奇數
foreach($str_arr as $k=>$v){
if(!($k%2))echo $v;
}
//取偶數
foreach($str_arr as $k=>$v){
if($k%2)echo $v;
}[……]
php .htaccess 實用範例
關閉 magic_quotes_gpc
# Only if you use PHP
<ifmodule mod_php4.c>
php_flag magic_quotes_gpc off
</ifmodule>
減少 Bandwidth 使用量
# Only if you use PHP
<ifmodule mod_php4.c>
php_value zlib.output_compression 16386
</ifmodule>
變更 scripts 副檔名
AddType application/x-httpd-php .php4
以上語句會將 .php4 當成 PHP 程式編譯。
禁止 .htaccess 開放瀏覽
<files file-name>
order allow,deny
deny from all
</files>
變更預設頁面
DirectoryIndex myhome.htm index.htm index.php
自訂錯誤頁面
ErrorDocument 403 /forbidden.html
ErrorDocument 404 /notfound.html
ErrorDocument 500 /servererror.html
開放/禁止瀏覽目錄
# 禁止
Options All -Indexes
# 開啟
Options +Indexes
本文出自
http://www.hkcode.com/linux-bsd-notes/438
Apache Rewrite with Htaccess 理解與技巧
[……]
PHP array union 陣列聯集
//array 聯集
array_unique(array_merge($array1, $array2,
$array3));//合併陣列
array_merge();
如果鍵名有重複,該鍵的鍵值為最後一個鍵名對應的值(後面的覆蓋前面的)。如果數組是數字索引的,則鍵名會以連續方式重新索引。
註釋:如果僅僅向array_merge() 函數輸入了一個數組,且鍵名是整數,則該函數將返回帶有整數鍵名的新數組,其鍵名以0 開始進行重新索引。//清除重複的值array_unique();
函數移除數組中的重複的值,並返回結果陣列。
當幾個數組元素的值相等時,只保留第一個元素,其他的元素被刪除。
返回的數組中鍵名不變。
參考
http://www.w3school.com.cn/php/func_array_unique.asp
http://www.w3school.com.cn/php/func_array_merge.asp
[……]