Ответ 1
Попробуйте вместо этого общий синтаксис:
if (strlen($message)<140) {
echo "less than 140";
}
else
if (strlen($message)>140) {
echo "more than 140";
}
else {
echo "exactly 140";
}
У меня есть строка длиной 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.";
}
Я использовал var_dump для $ message, и он показывает, что строка является [0]=> string(141)
. Вот моя проблема: когда я изменяю числа для оператора if
на <130
и >131
, он по-прежнему возвращает первое сообщение, хотя строка больше 131.
Независимо от того, какое число я использую меньше 141, я всегда получаю "Нет конкурсов". вернулся ко мне.
Попробуйте вместо этого общий синтаксис:
if (strlen($message)<140) {
echo "less than 140";
}
else
if (strlen($message)>140) {
echo "more than 140";
}
else {
echo "exactly 140";
}
[0]=> string(141)
означает $message - массив, поэтому вы должны сделать strlen($message[0]) < 141
...
[0]=> string(141)
означает, что $ message - это массив, а не строка, а $ message [0] - это строка длиной 141 символ.
$message
- возможно, не строка, а массив. Используйте $message[0]
для доступа к первому элементу.
Функция xpath() не возвращает строку. Он возвращает массив с элементами XML (типа SimpleXMLElement
), который может быть преобразован в строку.
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.";
}
}
Потому что $xml->xpath
всегда возвращает массив, а strlen
ожидает строку.
Решение XPath заключается в использовании:
string-length((//div[@class='contest'])[$k])
где $k следует заменить числом.
Это оценивает длину строки $k-th (в порядке документа) div
в XML-документе, который имеет атрибут class
со значением "конкурс".