Verifique String Length em PHP

Eu tenho uma string com 141 caracteres de comprimento. Usando o seguinte código, eu tenho uma instrução if para retornar uma mensagem se a string for maior ou menor que 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)  142) { echo "There is One Active Contest."; } 

Eu usei var_dump em $ mensagem e mostra que a string é [0]=> string(141) aqui é o meu problema. Quando eu mudo os números para a instrução if para 131, ele ainda retorna a 1ª mensagem, embora a string seja maior do que 131. Não importa o número que eu use menos de 141 eu sempre recebo “Não há Concursos”. voltou para mim.

experimente a syntax comum em vez disso:

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

[0]=> string(141) significa $ message é uma matriz para que você faça strlen($message[0]) < 141 ...

[0]=> string(141) significa que $ message é uma matriz, não string e $ message [0] é uma string com 141 caracteres de comprimento

$message é propably não uma string, mas uma matriz. Use $message[0] para acessar o primeiro elemento.

xpath não retorna uma string. Ele retorna uma matriz com elementos xml, que podem ser moldados para seqüência de caracteres.

 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."; } } 

Uma solução XPath é usar :

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

onde $ k deve ser substituído por um número.

Isso avalia o comprimento da seqüência de caracteres da divisão $ k-th (na ordem do documento) no documento XML que possui um atributo de class com valor ‘concurso’.

Como $xml->xpath sempre retorna uma matriz , strlen espera uma string .