2011-05-16 27 views
2

我試圖讓strpos正常工作。匹配值的問題

如果$monthly_cost$phone包含在$string中,則返回true。

<?php 
$monthly_cost = 25; 
$phone = "iPhone"; 

$string = "iPhone £25 24m Upgrade"; 

if (strpos($string, $phone) && strpos($string, $monthly_cost)) { 
    echo "found"; 
} 
?> 

還是使用正則表達式更好?

回答

4
if (strpos($string, $phone) !== false && 
    strpos($string, $monthly_cost) !== false) { 
    echo "found"; 
} 

現在它完全沒問題。

+0

嗯,沒有工作? – user622378 2011-05-16 12:32:49

+0

@user:將這個'$ monthly_cost = 25;'更改爲'$ monthly_cost ='25';' – 2011-05-16 12:38:57

0

嘗試

if (strpos($string, $phone) !== false && strpos($string, $monthly_cost) !== false) { 

strpos可能會返回0,如果您正在搜索的字符串是在位置0

1

在這種情況下,你可以使用strpos但請記住,你必須使用:

if (strpos($string, $phone)!==false && strpos($string, $monthly_cost)!==false) { 
    echo "found"; 
} 

因爲如果它返回0條件失敗。無論如何,你只能檢查這些值是否在字符串中,但你不能檢查它們是否是完整的單詞,所以如果你搜索「25」而字符串包含「256」strpos將返回true,所以如果你需要要做這種類型的驗證,你必須使用正則表達式。

+0

它由於某種原因沒有返回true? – user622378 2011-05-16 12:35:56

+0

strpos不返回true或false,它返回第一個字符串中第二個字符串的位置,如果不包含,則返回false。因此,如果$ string以$ phone開頭,則strpos返回0,如果不將它與!==進行比較,則返回false – mck89 2011-05-16 12:37:25