PHP 正規表達式,清除隱藏字元,整齊排列輸出的字元

清除隱藏字元,整齊排列輸出的字元,
其實這並不是一個很重要的工作啦,
但如果你看到下面輸出的XML會感到很痛苦的,
那你跟我一樣有這種偏執狂

看到這樣亂七八糟真的很痛苦,
主要是因為我們在編輯程式的時候,
有些隱藏字元會被我們加在字串中,
當輸出的時候就會一起被輸出,
比較長見的隱藏字元 n r t 就是造成這些很怪縮排的兇手,
我們可以透過正規表達式把這些字元取代,
第二個參數空白就是刪除,
echo preg_replace(‘/[nrt]/’, ‘ ‘, $xml);

不過這樣好像太乾淨了齁,
修改一下不要拿掉斷行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);


引用資料

RAW POST using cURL in PHP
http://stackoverflow.com/questions/871431/raw-post-using-curl-in-php

[……]

閱讀更多

Chrome – Postman – 測試 API 的好工具

轉自:林品翔 (tonilin)

http://blog.roachking.net/blog/2012/11/07/postman-restful-client/

POSTMAN in Google APP Store

因為工作的關係,常常寫一些 API 供 APP 使用。
以前傻傻的,每次測試的時候都會自己刻一個 HTML 的表單,一個一個填入 input ,接著送出。 後來覺得這樣太慢了,就用 JavaScript 寫了一個程式來送, 可是效率都沒有很好,尤其是需要反覆測試更改條件的時候。

之後在同事的推薦下用了 Burpsuite ,而這套軟體確實是可以做到沒錯,但是讓人有一種「殺雞焉用牛刀」的感覺。 因此又陸續找了幾個模擬 HTTP requests 的工具,卻都不甚理想。最近終於找到一套滿意的,也就是今天要介紹的 Postman。

Postman 是一個 Chrome 的 Extension,安裝以後可以在分頁欄裡面看到 Postman 的 Icon:

Postman 的主要功能

模擬各種 HTTP requests:從常用的 GET、POST 到 RESTful 的 PUT 、 DELETE …等等。 甚至還可以送出檔案、送出額外的 header。

Collection 功能:Collection 是 requests的集合,在做完單一個測試的時候, 你可以把這次的 request 存到特定的 Collection 裡面,如此一來,下次要測試的時候,就不需要重新輸入。
養成習慣以後,網站 API 的每個方法都寫好存進去,以後在開發的時候,就可以迅速得看到結果。 而 Collection 還可以 Import 或是 Share 出來,讓團隊裡面的其他人,可以一起使用你建立起來的 Collection。

整理過後的回傳結果:一般在用其他工具來測試的時候,回傳的東西通常都是純文字的 raw, 但如果是 JSON ,就是塞成一整行的 JSON。這會造成閱讀時的障礙 ,而 Postman 可以針對回傳資料的格式自動美化。 JSON、 XML 或是 HTML 都會整理成人類可以閱讀的型態。

設定環境:Postman 可以自由新增 Environment,一般我們可能會有多種環境, development 、 staging 或 local, 而這幾種環境的 request URL 也各不相同。新增 Environment,可以讓我們設定一些環境變數,使得切換環境測試的時候, 不用重寫 request。

小測試

我們丟一個 Request 到 Google Geocoding API ,讓大家看看實際的執行結果:

可以 一目瞭然地看到,送出什麼要求、得到什麼回應, 而 JSON 也整理好,且上好了顏色。
小結

自從用了 Postman 很滿意以後,也陸續推薦給其他同事,現在整個公司都在用 Postman 了!

如果你的專案也常常在處理 request,而且苦無測試工具,你可以試試 Postman。

[……]

閱讀更多

13種 網站測速

轉自:http://0123456789.tw/?p=1334

cputheo

前一陣子換了新主機之後,對於網站的連接載入速度還算滿意,r就這麼使用了半個月之後,突然有一天我連不上本站http://0123456789.tw/,我查看了管理的後臺,才發現可能是因為CPU limit過高?才使伺服器開啟了CPU節流閥(cpu throtting),而使網站被停用了1800秒?就是30分鐘,而這個改變是前一周我的伺服器供應商bluehost有說要更新,之後就多出了CPU throtting這個選項,原本以為是好的功能,確變成時常把我主機關閉的主因,然而納悶的是我的網站也才沒超過10人同時上站為何會這樣呢?不爽中…= =
好了廢話說完,本篇要介紹的是13個可以檢測你的網站速度的網站,傳說人們忍耐網頁載入的極限是7秒,若在七秒內你的網站沒有開啟完畢,大概要進入你的網站的人就掰掰你了,我不常上無名小站因為在他還沒賣給YAHOO之前的那陣子整個龜速到不行,而久而久之就沒習慣上去了,因為真得太龜了,即便是現在,還是有很多人的側邊攔掛了太多有的沒的外掛widget讀取還沒完我就沒耐心等下去了,而人類要養成一個習慣要66天,我養成的習慣是不上無名小站,呵,所以站在使用者立場或者網站SEO優化的立場來說,如果下列網站都將你的網站載入速度測出超過七秒的話,你就要好好思考如何減輕你的網站讀取的東西,例如一些外掛,或者圖片的數量,我再想是因為計算0123456789的首頁有很多縮圖,導致在讀取時會增加CPU的負荷,再觀察看看,若還是這樣可能就要考慮更換佈景主題了,哭哭。

計算網站讀取的資訊網站13個,使用方法都是填入你要測試的網址就OK了
1.

http://webwait.com/
這個網站他會一直讀取你的網頁,所以只有第一次的是比較準確的數值,因為後來的就關係到你本機的快取檔案會加快讀取的速度,


2.

http://tools.pingdom.com/

這個網站測試的蠻詳盡,包括每一個檔案讀出的速度,以及外掛,CSS檔或者script等其他可能是放在他處的檔案,可以看出是誰拖慢速度


3.

http://www.websiteoptimization.com/services/analyze/

這個網站也是詳盡一派的,還列出不同速度的網路會花費多少時間


4.

http://www.iwebtool.com/speed_test

這就很簡單,只有列出幾K幾秒跟平均讀取速度


5.

http://www.selfseo.com/website_speed_test.php

簡單派之二,說穿了網站速度就是列屬於SEO工具的其一


6.

http://www.vertain.com/?sst

這個說是用10MBPS的網路去連接的,下行還列出其他超快速度的網站參考值,不過14.31秒?好像不是很正確


7.

http://www.websitegoodies.com/tools/speed-test.php

這個0.758秒還真鮮,到了小數點下三位,只是我自認沒那麼快,我想是因為讀取太多次硬碟快取檔案加快的原因


8.

http://www.hostpulse.com/hosting/networktools/speedtest.asp

這個其實就是去PING你要測試的網站,你可以開啟MS-DOS自行輸入PING HTTP://XXX.XXX.XXX也可以查看一樣的數值


9.

http://www.linkvendor.com/seo-tools/speedtester.html

這個有分為非HTML跟HTML的部分去測試大小


10.

http://www.webkaka.com/

這是大陸那邊的側是網站,網路卡卡這名稱還真有創意,他可以測試由大陸13個點及國外4個點連入你網站的速度


11.

http://www.aptimize.com/website-speed-test

這個很龜毛,但也算專業,他們是協助你改善速度的公司,註冊後才能使用,他會將測試結果MAIL給你,做成一個PDF的檔案共三頁,我擷圖如下,這個也是第一次讀取要15秒,慘了


12.

http://www.freespeedtest.com/

這個可以測試由世界九個點連入的速度


13.

http://wonderwebware.com/page-speed-tester/

這個是要下載到PC上安裝測試的,測試可以看到他讀取的過程,個人覺得挺公正的,推薦

[……]

閱讀更多

jQuery Selector input type and name 選取器,選取標籤多屬性,如type&name

選取器,選取標籤多屬性,如type&name
可用於選取姓別的radiobox

if(sex==1){
$(“input[name=’sex’][type=’radio’][value=’1′]”).attr(“checked”,true);
}else{
$(“input[name=’sex’][type=’radio’][value=’0′]”).attr(“checked”,true);
}

相關網址
http://stackoverflow.com/questions/3221094/target-input-by-type-and-name-selector[……]

閱讀更多

PHP big5轉utf8不要用iconv(),iconv這個函數,用mb_convert_encoding

不要以為big5轉utf8就用iconv()這麼簡單

big5有很多字是沒有收錄的:

測試:

用法:

原文出自:

http://sweslo17.blogspot.tw/2012/04/big5-erpms-sql-local-cache-phpiconv.htmlhttp://dev.sopili.net/2009/08/phpbig5utf8iconv.htmlhttp://help.i2yes.com/?q=node/65

[……]

閱讀更多

CSS em標籤失效 em,strong,em tag not working

我們習慣在CSS編寫前引入reset.css來重設所有標籤的預設樣式,
但引入reset.css後,透過編輯器如CKEditor,可能產生斜體<em>標籤,
此時<em>標籤便失去原本html應該會呈現的斜體,另外粗體<b>..等,也會有此現象,
解決方法在引入reset.css後加入下面兩行CSS,問題解決
strong, b, strong *, b * { font-weight: bold !important; }
em
, i, em *, i * { font-style: italic !important; }

[……]

閱讀更多

CSS 項目符號

list-style-type:none; 《不編號》
list-style-type:decimal; 《阿拉伯數字》
list-style-type:lower-roman; 《小寫羅馬數字》
list-style-type:upper-roman; 《大寫羅馬數字》
list-style-type:lower-alpha; 《小寫英文字母》
list-style-type:upper-alpha; 《大寫英文字母》
list-style-type:disc; 《實心圓形符號》
list-style-type:circle; 《空心圓形符號》
list-style-type:square; 《實心方形符號》
list-style-image:url(dot.gif); 《圖片式符號》
list-style-position:outside; 《凸排》
list-style-position:inside; 《縮排》

原文出處
http://stenlyho.blogspot.tw/2008/07/css.html

[……]

閱讀更多