2015-10-22 92 views
0

所以我試着去ocunt在代理量的一切我想所有這就是輸出是1但它應該是這個問題像附近150PHP - 的Preg匹配計數問題

我想什麼:

preg_split('/(\/n)/',$proxies); count($preg_split_variable);

preg_match_all('/(\/n)/',$proxies) count($preg_match_all_variable);

我的代碼:

//Get the proxies from cUrl; Works fine. 
foreach($un as $op2) { 
    query("INSERT INTO proxies (proxy,last_grabbed,last_grabid,url) VALUES (:proxy,:last_grabbed,:last_grabid,:proxyurl)",array(":proxy"=>$op2,":last_grabbed"=>$date,":last_grabid"=>$grabid,":proxyurl"=>$proxyurl[0]['url']),'unfed_tools'); 
    $proxies .= $op2."\n"; 
} 

//Count the amount of grabbed proxies; Doesnt work; Outputs 1 every time; 
$proxycount = preg_match_all('/(\/n)/',$proxies); 
count($proxycount); 

我不知道爲什麼。有任何想法嗎?

+0

您還沒有存儲被發現結果的數量。你也不能只在foreach中添加一個計數(如果只有新行是你在循環中加入'$ proxies'的行)? – chris85

+0

使用'substr_count()'(否則:RTM什麼'preg_match_all'返回) – Rizier123

+0

@ chris85哇,不知道我怎麼沒有發現這個... –

回答

0

您的preg_match_all由於某些原因未給出計數。首先是你沒有捕獲到發現的值。第二個是\n是一個換行符,而不是/n。你可以在這裏看到差異,https://regex101.com/r/jE2oS6/1

所以,你可以做

foreach($un as $op2) { 
    query("INSERT INTO proxies (proxy,last_grabbed,last_grabid,url) VALUES (:proxy,:last_grabbed,:last_grabid,:proxyurl)",array(":proxy"=>$op2,":last_grabbed"=>$date,":last_grabid"=>$grabid,":proxyurl"=>$proxyurl[0]['url']),'unfed_tools'); 
    $proxies .= $op2."\n"; 
} 

//Count the amount of grabbed proxies; Doesnt work; Outputs 1 every time; 
preg_match_all('/(\n)/',$proxies, $proxycount); 
count($proxycount[1]); 

另一種方法是

count(explode("\n", $proxies));