/** * Prüfen ob alle leeren Elemente auch das array gelöscht werden * und keys zurückgesetzt werden */ public function testRemoveEmptyArrayValuesSimple() { $aArray = array('ich', 'bin', 1, '', 0, null, 'Array' => array(), 'Test', true, false); $aNoEmptyValues = tx_mklib_util_Array::removeEmptyArrayValuesSimple($aArray); $this->assertTrue(is_array($aNoEmptyValues), 'No array given.'); $this->assertEquals(count($aNoEmptyValues), 5, 'Wrong count of entries.'); //auf die keys im zurück gegebenen und initialen array achten!!! $this->assertEquals('ich', $aNoEmptyValues[0], '1. wert falsch'); $this->assertEquals('bin', $aNoEmptyValues[1], '2. wert falsch'); $this->assertEquals(1, $aNoEmptyValues[2], '3. wert falsch'); $this->assertEquals('Test', $aNoEmptyValues[3], '4. wert falsch'); $this->assertEquals(true, $aNoEmptyValues[4], '5. wert falsch'); }
/** * Prüft ob ein Wort der Wortliste im gegebenen String vorkommt * * @param string $word * @param $wordlist * @param $greedy | alle oder nur ein Treffer? * @param $sanitizeWord | alle Sonderzeichen vor der Prüfung entfernen * * @return null || array || string */ private function checkForWordInWordlist($word, $wordlist, $greedy = true, $sanitizeWord = true) { //wenn es kein array ist, dann is die wordlist leer if (!is_array($wordlist)) { return NULL; } if ($sanitizeWord) { //alle Sondzeichen entfernen $utilString = tx_rnbase::makeInstance('tx_mklib_util_String'); $word = $utilString->html2plain($word); $word = $utilString->removeNoneLetters($word); } //die einzelnen Wörter prüfen foreach ($wordlist as $entry) { //damit in DB nicht für jedes Wort ein Eintrag angelegt werden muss, //werden komma-separierte Wörterlisten innerhalb des Wort-Feldes //ebenfalls unterstützt --> str_replace $sWordlist .= $sEntry = str_replace(',', '|', $entry->getWord()); // '\b' bedeutet das nur nach ganzen Wörtern gesucht wird. ist f**k //geblacklisted wird sfuck nicht bemängelt if (!$greedy && preg_match('/\\b(' . $sEntry . ' )\\b/i', $word, $matches)) { //nur einen treffer? return $matches[0]; } $sWordlist .= '|'; //für die regexp } // '\b' bedeutet das nur nach ganzen Wörtern gesucht wird. ist f**k //geblacklisted wird sfuck nicht bemängelt if ($greedy && preg_match_all('/\\b(' . $sWordlist . ')\\b/i', $word, $matches)) { //alle treffer? tx_rnbase::load('tx_mklib_util_Array'); //preg_mactch_all gibt ein array zurück, was auch viele leere Werte für die Nicht-Treffer enthält. Diese stören und werden bereinigt return tx_mklib_util_Array::removeEmptyArrayValuesSimple($matches[0]); } //kein Treffer!!! return null; }