2013-05-02 39 views
0

我有一個腳本可以從字符串中獲取所有的散列標籤,然後將它們存儲在一個數組中,接下來發生的事情是由字符串中是否存在任何散列標籤來決定的。如果在被測試的字符串中確實存在散列標籤,我如何創建if語句來僅運行代碼。測試字符串中的匹配

這是我曾嘗試:

<?php 

$string= "Went for an awesome bike"; 

echo $string . "</br></br>"; 

preg_match_all('/#(\w+)/',$string, $matches); 


if ($matches != 0) { 

    foreach ($matches[1] as $tag) { 

     echo $tag . "</br></br>"; 

    } 

} 
else { 

    echo "There are no tags here!!"; 

} 


?> 

我無法得到它的回聲出故障消息?我可能做錯了什麼?

謝謝!

回答

0

匹配是一個數組。

if (count($matches[1]) != 0) 
1

preg_match_all()將返回多少匹配作了(包括0),或布爾值false失敗,所以只是簡單:

$cnt = preg_match_all(...); 
if (($cnt !== FALSE) && ($cnt > 0)) { 
    ... found something ... 
} 

會做。請注意0​​。這是區分真正的布爾值false和簡單整數0的必要條件,兩者在使用標準非嚴格==邏輯時測試爲相等。

0
var_dump(array() == 0); 

=>

布爾(假)

檢查:

if (!empty($matches[0])) 

作爲數組$matches總是填充有至少一個項目;但是這個數組的條目並不總是如此。

1

覈對,對於最簡單的方法是通過更改線路

if ($matches != 0) { 

if ($matches[1]) { 

,以檢查是否有你的字符串匹配(因爲它是假的,如果數組爲空)

如果您要驗證,你可以做var_dump($matches);看什麼preg_match_all()回報

的獎金,你可以在這裏檢查你的正則表達式testing site i use