我有一个长度为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,我总是得到“没有比赛”。回到我身边。
答案 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
属性。