[英]search tags in a php string with strpos
這是UTF-8字符串
$string = '<h2> a none english char - utf-8 string </h2>';
我想檢查<h2>
標簽是否在$ string中存在
我嘗試:
if(strpos($string , '<h2>'))
or
if(strpos($string , '<h2>') == true )
or
if(strpos($string , '<h2>') === true)
or
if(mb_strpos($string , '<h2>' ))
但所有這些條件都重新運行為假。 怎么了?
測試失敗,因為“ needle”字符串恰好出現在干草堆的開頭,因此strpos()將返回0
,以指示字符串的開始。
if (0) -> false
if (0 == true) -> false
if (0 === true) -> false
在這種情況下,您不能使用相等,而必須使用不相等:
if (strpos(...) !== FALSE)
評論跟進:
我看不到它怎么可能“完全沒有效果”:
php > $string = '<h2> a none english char - utf-8 string </h2>';
php > var_dump(strpos($string, '<h2>'));
int(0)
php > var_dump(strpos($string, '<h2>') == true);
bool(false)
php > var_dump(strpos($string, '<h2>') === true);
bool(false)
php > var_dump(mb_strpos($string, '<h2>'));
int(0)
php > var_dump(mb_strpos($string, '<h2>') !== false);
bool(true)
您的最后一個應該可以工作(使用mb_strpos )。 但是在您的字符串中,“”位於字符串的開頭,而thefore在位置0。mb_strpos或strpos返回子字符串的位置(如果找到),或者布爾值false(如果找不到)。 由於您正在檢查以下情況:
if (mb_strpos($string, '<h2>'))
您實際上正在檢查:
if (0)
這就是為什么您認為它是錯誤的。 采用:
if (mb_strpos($string , '<h2>') !== false)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.