在PHP中检查字符串长度

时间:2011-04-06 07:57:55

标签: php string

我有一个长度为141个字符的字符串。使用以下代码,我有一个if语句,如果字符串大于或小于140,则返回一条消息。

libxml_use_internal_errors(TRUE);
$dom = new DOMDocument();
$dom->loadHTMLFile($source);
$xml = simplexml_import_dom($dom);
libxml_use_internal_errors(FALSE);
$message = $xml->xpath("//div[@class='contest']");

if (strlen($message) < 141)
{
   echo "There Are No Contests.";
}
elseif(strlen($message) > 142)
{
   echo "There is One Active Contest.";
}

我在$ message上使用了var_dump,它显示字符串为[0]=> string(141)这是我的问题。当我将if语句的数字更改为&lt; 130和&gt; 131时,它仍会返回第一条消息,尽管字符串大于131.无论我使用的数字少于141,我总是得到“没有比赛”。回到我身边。

7 个答案:

答案 0 :(得分:73)

尝试使用通用语法:

if (strlen($message)<140) {
  echo "less than 140";
}
else
if (strlen($message)>140) {
  echo "more than 140";
}
else {
  echo "exactly 140";
}

答案 1 :(得分:10)

[0]=> string(141)表示$ message是一个数组,因此您应该strlen($message[0]) < 141 ...

答案 2 :(得分:4)

[0]=> string(141)表示$ message是一个数组,而不是字符串,$ message [0]是一个长度为141个字符的字符串

答案 3 :(得分:3)

$message可能根本不是字符串,而是数组。使用$message[0]访问第一个元素。

答案 4 :(得分:3)

xpath不返回字符串。它返回一个包含xml元素的数组,可以将其转换为字符串。

if (count($message)) {
   if (strlen((string)$message[0]) < 141) {
      echo "There Are No Contests.";
   }
   else if(strlen((string)$message[0]) > 142) {
      echo "There is One Active Contest.";
   }
}

答案 5 :(得分:1)

由于$xml->xpath始终返回 数组 strlen需要 字符串

答案 6 :(得分:1)

XPath解决方案是使用

string-length((//div[@class='contest'])[$k])

其中$ k应该用数字代替。

这将计算XML文档中$ k-th(按文档顺序)div的字符串长度,该文档具有值为'contest'的class属性。