Controllare la lunghezza della stringa in PHP

Ho una stringa che è 141 caratteri di lunghezza. Utilizzando il seguente codice che ho un if istruzione per restituire un messaggio se la stringa è maggiore o minore di 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.";
}

Ho usato var_dump di $messaggio e mostra la stringa è [0]=> string(141). Ecco il mio problema: Quando cerco di modificare i numeri per il if istruzione <130 e >131, restituisce comunque il primo messaggio, anche se la stringa è maggiore di 131.

Non importa quale numero utilizzare meno di 141 ricevo sempre “Non Ci Sono Concorsi.” tornò a me.

InformationsquelleAutor FAFAFOHI | 2011-04-06



7 Replies
  1. 75

    Provare la sintassi comune, invece:

    if (strlen($message)<140) {
        echo "less than 140";
    }
    else
        if (strlen($message)>140) {
            echo "more than 140";
        }
        else {
            echo "exactly 140";
        }
    • Un switch su strlen($message) sarebbe ancora più veloce…
  2. 4

    [0]=> string(141) significa che $messaggio è un array, non stringa, $message[0] è una stringa con 141 caratteri.

  3. 3

    $message è probabilmente non è una stringa, ma un array. Utilizzare $message[0] per accedere al primo elemento.

  4. 3

    Il xpath() funzione non restituisce una stringa. Restituisce un array con gli elementi XML (di tipo SimpleXMLElement), che possono essere trasformati in stringhe.

    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.";
       }
    }
    • Io sono abbastanza rue casting di un array di string vi consentirà di ottenere la parola ‘Matrice’, che è quello già implicitamente accadendo in OP post (dal strlen() si aspetta una stringa). ‘Array’ è sempre più corto 141 caratteri.
    • Ops.. ero quasi lì, fissa questa.. grazie
  5. 1

    XPath soluzione è quella di utilizzare:

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

    dove $k dovrebbe essere sostituito da un numero.

    Questo restituisce la lunghezza della stringa di $k-esimo (in ordine di un documento) div nel documento XML che ha un class attributo con valore di ‘concorso’.

Lascia un commento