'Genesis', 'gen' => 'Genesis', 'g' => 'Genesis', 'ex' => 'Exodus', 'exodus' => 'Exodus', 'leviticus' => 'Leviticus', 'lev' => 'Leviticus', 'numbers' => 'Numbers', 'num' => 'Numbers', 'n' => 'Numbers', 'deuteronomy' => 'Deuteronomy', 'deut' => 'Deuteronomy', 'd' => 'Deuteronomy', 'joshua' => 'Joshua', 'josh' => 'Joshua', 'judges' => 'Judges', 'jdgs' => 'Judges', 'ruth' => 'Ruth', '1 sam' => 'I Samuel', '1sam' => 'I Samuel', 'i samuel' => 'I Samuel', 'isamuel' => 'I Samuel', '1 samuel' => 'I Samuel', '1samuel' => 'I Samuel', 'ii samuel' => 'II Samuel', 'iisamuel' => 'II Samuel', '2 sam' => 'II Samuel', '2sam' => 'II Samuel', '2 samuel' => 'II Samuel', '2samuel' => 'II Samuel', 'i kings' => 'I Kings', 'ikings' => 'I Kings', '1 kings' => 'I Kings', '1kings' => 'I Kings', '1 kgs' => 'I Kings', '1kgs' => 'I Kings', 'ii kings' => 'II Kings', 'iikings' => 'II Kings', '2 kings' => 'II Kings', '2kings' => 'II Kings', '2 kgs' => 'II Kings', '2kgs' => 'II Kings', 'i chronicles' => '1 Chronicles', 'ichronicles' => '1 Chronicles', '1 chronicles' => '1 Chronicles', '1chronicles' => '1 Chronicles', 'ii chronicles' => '2 Chronicles', 'iichronicles' => '2 Chronicles', '2 chronicles' => '2 Chronicles', '2chronicles' => '2 Chronicles', 'ezra' => 'Ezra', 'nehemiah' => 'Nehemiah', 'neh' => 'Nehemiah', 'esther' => 'Esther', 'ester' => 'Esther', 'esth' => 'Esther', 'job' => 'Job', 'psalms' => 'Psalms', 'psalm' => 'Psalms', 'psm' => 'Psalms', 'pss' => 'Psalms', 'ps' => 'Psalms', 'p' => 'Psalms', 'proverbs' => 'Proverbs', 'prov' => 'Proverbs', 'ecclesiastes' => 'Ecclesiastes', 'qoheleth' => 'Ecclesiastes', 'song of solomon' => 'Song of Solomon', 'song of songs' => 'Song of Solomon', 'solomon' => 'Song of Solomon', 'song' => 'Song of Solomon', 'sng' => 'Song of Solomon', 'sos' => 'Song of Solomon', 'isaiah' => 'Isaiah', 'isa' => 'Isaiah', 'isaiah' => 'Isaiah', 'jeremiah' => 'Jeremiah', 'jer' => 'Jeremiah', 'lamentations' => 'Lamentations', 'lam' => 'Lamentations', 'ezekiel' => 'Ezekiel', 'ezek' => 'Ezekiel', 'ezk' => 'Ezekiel', 'dan' => 'Daniel', 'daniel' => 'Daniel', 'hosea' => 'Hosea', 'hos' => 'Hosea', 'joel' => 'Joel', 'jol' => 'Joel', 'amos' => 'Amos', 'obadiah' => 'Obadiah', 'jonah' => 'Jonah', 'micah' => 'Micah', 'nahum' => 'Nahum', 'nam' => 'Nahum', 'habakkuk' => 'Habakkuk', 'hab' => 'Habakkuk', 'zephaniah' => 'Zephaniah', 'zeph' => 'Zephaniah', 'haggai' => 'Haggai', 'hag' => 'Haggai', 'zechariah' => 'Zechariah', 'zachariah' => 'Zechariah', 'malachi' => 'Malachi', 'mal' => 'Malachi', 'matthew' => 'Matthew', 'matt' => 'Matthew', 'ma' => 'Matthew', 'mt' => 'Matthew', 'mark' => 'Mark', 'mk' => 'Mark', 'mrk' => 'Mark', 'luke' => 'Luke', 'lk' => 'Luke', 'l' => 'Luke', 'john' => 'John', 'jhn' => 'John', 'jn' => 'John', 'jo' => 'John', 'j' => 'John', 'acts' => 'Acts', 'romans' => 'Romans', 'rom' => 'Romans', 'i corinthians' => '1 Corinthians', 'icorinthians' => '1 Corinthians', '1 corinthians' => '1 Corinthians', '1corinthians' => '1 Corinthians', '1 cor' => '1 Corinthians', '1cor' => '1 Corinthians', 'i c' => '1 Corinthians', 'ic' => '1 Corinthians', '1 c' => '1 Corinthians', '1c' => '1 Corinthians', 'ii corinthians' => '2 Corinthians', 'iicorinthians' => '2 Corinthians', '2 corinthians' => '2 Corinthians', '2corinthians' => '2 Corinthians', '2 cor' => '2 Corinthians', '2cor' => '2 Corinthians', 'ii c' => '2 Corinthians', 'iic' => '2 Corinthians', '2 c' => '2 Corinthians', '2c' => '2 Corinthians', 'galatians' => 'Galatians', 'gal' => 'Galatians', 'ephesians' => 'Ephesians', 'eph' => 'Ephesians', 'e' => 'Ephesians', 'philippians' => 'Philippians', 'philip' => 'Philippians', 'phil' => 'Philippians', 'php' => 'Philippians', 'colossians' => 'Colossians', 'col' => 'Colossians', 'c' => 'Colossians', '1 thess' => '1 Thessalonians', '1thess' => '1 Thessalonians', 'i thessalonians' => '1 Thessalonians', 'ithessalonians' => '1 Thessalonians', '1 thessalonians' => '1 Thessalonians', '1thessalonians' => '1 Thessalonians', 'ii thessalonians' => '2 Thessalonians', 'iithessalonians' => '2 Thessalonians', '2 thessalonians' => '2 Thessalonians', '2thessalonians' => '2 Thessalonians', '2 thess' => '2 Thessalonians', '2thess' => '2 Thessalonians', '1tim' => '1 Timothy', '1 tim' => '1 Timothy', 'i timothy' => '1 Timothy', 'itimothy' => '1 Timothy', '1 timothy' => '1 Timothy', '1timothy' => '1 Timothy', 'ii timothy' => '2 Timothy', 'iitimothy' => '2 Timothy', '2 tim' => '2 Timothy', '2tim' => '2 Timothy', '2 timothy' => '2 Timothy', '2timothy' => '2 Timothy', 'titus' => 'Titus', 'philemon' => 'Philemon', 'phlm' => 'Philemon', 'phm' => 'Philemon', 'hebrews' => 'Hebrews', 'heb' => 'Hebrews', 'h' => 'Hebrews', 'james' => 'James', 'jas' => 'James', 'i peter' => '1 Peter', 'ipeter' => '1 Peter', 'i ptr' => '1 Peter', 'iptr' => '1 Peter', '1 peter' => '1 Peter', '1peter' => '1 Peter', '1 ptr' => '1 Peter', '1ptr' => '1 Peter', 'ii peter' => '2 Peter', 'iipeter' => '2 Peter', 'ii ptr' => '2 Peter', 'iiptr' => '2 Peter', '2 peter' => '2 Peter', '2peter' => '2 Peter', '2 ptr' => '2 Peter', '2ptr' => '2 Peter', 'ii peter' => '2 Peter', 'i john' => '1 John', 'ijohn' => '1 John', '1 john' => '1 John', '1john' => '1 John', 'i jn' => '1 John', 'ijn' => '1 John', '1 jn' => '1 John', '1jn' => '1 John', 'ii john' => '2 John', 'iijohn' => '2 John', '2 john' => '2 John', '2john' => '2 John', 'ii jn' => '2 John', 'iijn' => '2 John', '2 jn' => '2 John', '2jn' => '2 John', 'iii john' => '3 John', 'iiijohn' => '3 John', '3 john' => '3 John', '3john' => '3 John', 'iii jn' => '3 John', 'iiijn' => '3 John', '3 jn' => '3 John', '3jn' => '3 John', 'jude' => 'Jude', 'revelation of john' => 'Revelation of John', 'revelations' => 'Revelation of John', 'revelation' => 'Revelation of John', 'rev' => 'Revelation of John' ); var $chapters = array( 'Genesis' => array(31, 25, 24, 26, 32, 22, 24, 22, 29, 32, 32, 20, 18, 24, 21, 16, 27, 33, 38, 18, 34, 24, 20, 67, 34, 35, 46, 22, 35, 43, 55, 32, 20, 31, 29, 43, 36, 30, 23, 23, 57, 38, 34, 34, 28, 34, 31, 22, 33, 26), 'Exodus' => array(22, 25, 22, 31, 23, 30, 25, 32, 35, 29, 10, 51, 22, 31, 27, 36, 16, 27, 25, 26, 36, 31, 33, 18, 40, 37, 21, 43, 46, 38, 18, 35, 23, 35, 35, 38, 29, 31, 43, 38), 'Leviticus' => array(17, 16, 17, 35, 19, 30, 38, 36, 24, 20, 47, 8, 59, 57, 33, 34, 16, 30, 37, 27, 24, 33, 44, 23, 55, 46, 34), 'Numbers' => array(54, 34, 51, 49, 31, 27, 89, 26, 23, 36, 35, 16, 33, 45, 41, 50, 13, 32, 22, 29, 35, 41, 30, 25, 18, 65, 23, 31, 40, 16, 54, 42, 56, 29, 34, 13), 'Deuteronomy' => array(46, 37, 29, 49, 33, 25, 26, 20, 29, 22, 32, 32, 18, 29, 23, 22, 20, 22, 21, 20, 23, 30, 25, 22, 19, 19, 26, 68, 29, 20, 30, 52, 29, 12), 'Joshua' => array(18, 24, 17, 24, 15, 27, 26, 35, 27, 43, 23, 24, 33, 15, 63, 10, 18, 28, 51, 9, 45, 34, 16, 33), 'Judges' => array(36, 23, 31, 24, 31, 40, 25, 35, 57, 18, 40, 15, 25, 20, 20, 31, 13, 31, 30, 48, 25), 'Ruth' => array(22, 23, 18, 22), 'I Samuel' => array(28, 36, 21, 22, 12, 21, 17, 22, 27, 27, 15, 25, 23, 52, 35, 23, 58, 30, 24, 42, 15, 23, 29, 22, 44, 25, 12, 25, 11, 31, 13), 'II Samuel' => array(27, 32, 39, 12, 25, 23, 29, 18, 13, 19, 27, 31, 39, 33, 37, 23, 29, 33, 43, 26, 22, 51, 39, 25), 'I Kings' => array(53, 46, 28, 34, 18, 38, 51, 66, 28, 29, 43, 33, 34, 31, 34, 34, 24, 46, 21, 43, 29, 53), 'II Kings' => array(18, 25, 27, 44, 27, 33, 20, 29, 37, 36, 21, 21, 25, 29, 38, 20, 41, 37, 37, 21, 26, 20, 37, 20, 30), '1 Chronicles' => array(54, 55, 24, 43, 26, 81, 40, 40, 44, 14, 47, 40, 14, 17, 29, 43, 27, 17, 19, 8, 30, 19, 32, 31, 31, 32, 34, 21, 30), '2 Chronicles' => array(17, 18, 17, 22, 14, 42, 22, 18, 31, 19, 23, 16, 22, 15, 19, 14, 19, 34, 11, 37, 20, 12, 21, 27, 28, 23, 9, 27, 36, 27, 21, 33, 25, 33, 27, 23), 'Ezra' => array(11, 70, 13, 24, 17, 22, 28, 36, 15, 44), 'Nehemiah' => array(11, 20, 32, 23, 19, 19, 73, 18, 38, 39, 36, 47, 31), 'Esther' => array(22, 23, 15, 17, 14, 14, 10, 17, 32, 3), 'Job' => array(22, 13, 26, 21, 27, 30, 21, 22, 35, 22, 20, 25, 28, 22, 35, 22, 16, 21, 29, 29, 34, 30, 17, 25, 6, 14, 23, 28, 25, 31, 40, 22, 33, 37, 16, 33, 24, 41, 30, 24, 34, 17), 'Psalms' => array( 6, 12, 8, 8, 12, 10, 17, 9, 20, 18, 7, 8, 6, 7, 5, 11, 15, 50, 14, 9, 13, 31, 6, 10, 22, 12, 14, 9, 11, 12, 24, 11, 22, 22, 28, 12, 40, 22, 13, 17, 13, 11, 5, 26, 17, 11, 9, 14, 20, 23, 19, 9, 6, 7, 23, 13, 11, 11, 17, 12, 8, 12, 11, 10, 13, 20, 7, 35, 36, 5, 24, 20, 28, 23, 10, 12, 20, 72, 13, 19, 16, 8, 18, 12, 13, 17, 7, 18, 52, 17, 16, 15, 5, 23, 11, 13, 12, 9, 9, 5, 8, 28, 22, 35, 45, 48, 43, 13, 31, 7, 10, 10, 9, 8, 18, 19, 2, 29, 176, 7, 8, 9, 4, 8, 5, 6, 5, 6, 8, 8, 3, 18, 3, 3, 21, 26, 9, 8, 24, 13, 10, 7, 12, 15, 21, 10, 20, 14, 9, 6), 'Proverbs' => array(33, 22, 35, 27, 23, 35, 27, 36, 18, 32, 31, 28, 25, 35, 33, 33, 28, 24, 29, 30, 31, 29, 35, 34, 28, 28, 27, 28, 27, 33, 31), 'Ecclesiastes' => array(18, 26, 22, 16, 20, 12, 29, 17, 18, 20, 10, 14), 'Song of Solomon' => array(17, 17, 11, 16, 16, 13, 13, 14), 'Isaiah' => array(31, 22, 26, 6, 30, 13, 25, 22, 21, 34, 16, 6, 22, 32, 9, 14, 14, 7, 25, 6, 17, 25, 18, 23, 12, 21, 13, 29, 24, 33, 9, 20, 24, 17, 10, 22, 38, 22, 8, 31, 29, 25, 28, 28, 25, 13, 15, 22, 26, 11, 23, 15, 12, 17, 13, 12, 21, 14, 21, 22, 11, 12, 19, 12, 25, 24), 'Jeremiah' => array(19, 37, 25, 31, 31, 30, 34, 22, 26, 25, 23, 17, 27, 22, 21, 21, 27, 23, 15, 18, 14, 30, 40, 10, 38, 24, 22, 17, 32, 24, 40, 44, 26, 22, 19, 32, 21, 28, 18, 16, 18, 22, 13, 30, 5, 28, 7, 47, 39, 46, 64, 34), 'Lamentations' => array(22, 22, 66, 22, 22), 'Ezekiel' => array(28, 10, 27, 17, 17, 14, 27, 18, 11, 22, 25, 28, 23, 23, 8, 63, 24, 32, 14, 49, 32, 31, 49, 27, 17, 21, 36, 26, 21, 26, 18, 32, 33, 31, 15, 38, 28, 23, 29, 49, 26, 20, 27, 31, 25, 24, 23, 35), 'Daniel' => array(21, 49, 30, 37, 31, 28, 28, 27, 27, 21, 45, 13), 'Hosea' => array(11, 23, 5, 19, 15, 11, 16, 14, 17, 15, 12, 14, 16, 9), 'Joel' => array(20, 32, 21), 'Amos' => array(15, 16, 15, 13, 27, 14, 17, 14, 15), 'Obadiah' => array(21), 'Jonah' => array(17, 10, 10, 11), 'Micah' => array(16, 13, 12, 13, 15, 16, 20), 'Nahum' => array(15, 13, 19), 'Habakkuk' => array(17, 20, 19), 'Zephaniah' => array(18, 15, 20), 'Haggai' => array(15, 23), 'Zechariah' => array(21, 13, 10, 14, 11, 15, 14, 23, 17, 12, 17, 14, 9, 21), 'Malachi' => array(14, 17, 18, 6), 'Matthew' => array(25, 23, 17, 25, 48, 34, 29, 34, 38, 42, 30, 50, 58, 36, 39, 28, 27, 35, 30, 34, 46, 46, 39, 51, 46, 75, 66, 20), 'Mark' => array(45, 28, 35, 41, 43, 56, 37, 38, 50, 52, 33, 44, 37, 72, 47, 20), 'Luke' => array(80, 52, 38, 44, 39, 49, 50, 56, 62, 42, 54, 59, 35, 35, 32, 31, 37, 43, 48, 47, 38, 71, 56, 53), 'John' => array(51, 25, 36, 54, 47, 71, 53, 59, 41, 42, 57, 50, 38, 31, 27, 33, 26, 40, 42, 31, 25), 'Acts' => array(26, 47, 26, 37, 42, 15, 60, 40, 43, 48, 30, 25, 52, 28, 41, 40, 34, 28, 41, 38, 40, 30, 35, 27, 27, 32, 44, 31), 'Romans' => array(32, 29, 31, 25, 21, 23, 25, 39, 33, 21, 36, 21, 14, 23, 33, 27), '1 Corinthians' => array(31, 16, 23, 21, 13, 20, 40, 13, 27, 33, 34, 31, 13, 40, 58, 24), '2 Corinthians' => array(24, 17, 18, 18, 21, 18, 16, 24, 15, 18, 33, 21, 14), 'Galatians' => array(24, 21, 29, 31, 26, 18), 'Ephesians' => array(23, 22, 21, 32, 33, 24), 'Philippians' => array(30, 30, 21, 23), 'Colossians' => array(29, 23, 25, 18), '1 Thessalonians' => array(10, 20, 13, 18, 28), '2 Thessalonians' => array(12, 17, 18), '1 Timothy' => array(20, 15, 16, 16, 25, 21), '2 Timothy' => array(18, 26, 17, 22), 'Titus' => array(16, 15, 15), 'Philemon' => array(25), 'Hebrews' => array(14, 18, 19, 16, 14, 20, 28, 13, 28, 39, 40, 29, 25), 'James' => array(27, 26, 18, 17, 20), '1 Peter' => array(25, 25, 22, 19, 14), '2 Peter' => array(21, 22, 18), '1 John' => array(10, 29, 24, 21, 21), '2 John' => array(13), '3 John' => array(14), 'Jude' => array(25), 'Revelation of John' => array(20, 29, 22, 11, 14, 17, 17, 13, 21, 11, 19, 17, 18, 20, 8, 21, 18, 24, 21, 15, 27, 21) ); /* * Class initialization (Default: King James Version) */ function Bible($translation='kjv') { global $_SERVER; global $_SESSION; global $_REQUEST; global $_POST; global $_GET; return $this->setTranslation($translation); } /* * Loads a bible translation */ function setTranslation($translation) { $this->translation = $translation; if ( is_file(constant("RELPATH").'include/bibles/'.$translation.'.xml') ) { $this->bible = @simplexml_load_file(constant("RELPATH").'include/bibles/'.$translation.'.xml'); return(true); } else { $this->bible = false; return(false); } } /* * Retuns the current translation */ function getTranslation() { return($this->translation); } /* * Set the current book */ function setBook($book='') { if ( $book == '' ) { $this->error = '
You must specify the book you want to read.
'; return(false); } if ( isset($this->books[strtolower($book)]) ) { $this->verse['book'] = $this->books[strtolower($book)]; return(true); } else { $this->error = '
Unknown Bible book reference: '.$book.'
'; return(false); } } /* * Get the current book */ function getBook() { return($this->verse['book']); } /* * Set the current chapter */ function setChapter($chapter='') { if ( $chapter == '' ) { $this->error = '
Please specify at least one chapter in '.$this->getBook().' you want to read.
'; return(false); } if ( isset($this->chapters[$this->getBook()][$chapter-1]) ) { $this->verse['chapter'] = $chapter; return(true); } else { $this->error = '
Invalid Bible chapter reference. '.$this->getBook().' only contains '.count($this->chapters[$this->getBook()]).' chapters
'; return(false); } } /* * Get the current chapter */ function getChapter() { return($this->verse['chapter']); } /* * Set the raw verse string */ function setVerses($verses='') { if ( $verses == '' ) { return(true); } $this->verse['verses'] = $verses; return(true); } /* * Get the raw verse string */ function getVerses() { return($this->verse['verses']); } /* * Set the current starting verse */ function setStart($start='') { if ( $start == '' ) { return(true); } if ( $start > 0 && $start <= $this->chapters[$this->getBook()][$this->getChapter()-1] ) { $this->verse['start'] = $start; return(true); } else { $this->error = '
Invalid starting verse reference. Chapter only contains '.$this->chapters[$this->getBook()][$this->getChapter()-1].' verses
'; return(false); } } /* * Get the current starting verse */ function getStart() { return($this->verse['start']); } /* * Set the current ending verse */ function setEnd($end='') { if ( $end == '' && $this->getStart() == '' ) { $this->verse['start'] = 1; $this->verse['end'] = 176; return(true); } if ( $end == '' && is_int($this->getStart()) && $this->getStart() > 0 ) { $this->verse['end'] = $this->getStart(); return(true); } if ( $end > 0 && $end <= $this->chapters[$this->getBook()][$this->getChapter()-1] ) { $this->verse['end'] = $end; return(true); } $this->error = '
Invalid ending verse reference. Chapter only contains '.$this->chapters[$this->getBook()][$this->getChapter()-1].' verses
'; return(false); } /* * Get the current ending verse */ function getEnd() { return($this->verse['end']); } /* * Build an array of the number => verse to use to generate the HTML representation of the verse */ function setHtml($book,$chapter,$verses='') { $this->setVerses($verses); // This will loop over components of the verse using commas to delimit foreach ( explode(',', $verses) as $verse ) { // Determine if the verse reference is a "1-2" or a "1" or no reference if ( preg_match( "/\s*(\d+)\s*[-]+\s*(\d+).*/", $verse, $v ) ) { $start = $v[1]; $end = $v[2]; } elseif ( preg_match( "/\s*(\d+).*/", $verse, $v ) ) { $start = $v[1]; $end = $v[1]; } else { $start = ''; $end = ''; } // Try to find the verses for this loop if ( $this->setBook($book) && $this->setChapter($chapter) && $this->setStart($start) && $this->setEnd($end) ) { $xpath = "//book[@name='".$this->getBook()."']/chapter[@name='".$this->getChapter(). "']/verse[@name>='".$this->getStart()."' and @name<='".$this->getEnd()."']"; foreach ( $this->bible->xpath($xpath) as $text) { // This builds the array we will use to generate the verse html text. // It uses the verse number as the key of the array to prevent duplicate lines $this->verse['html']["{$text['name']}"] = "$text"; } } else { // Don't set an error here because if we have an error from setting book/chapter/verse // it will be passed up from here return(false); } } return(true); } /* * Generate html based on the array of verses */ function getHtml() { $result = "
\n"; // Sort the verses based on verse number ksort($this->verse['html']); // Iterate over our verse set to generate the html while (list($key, $val) = each($this->verse['html'])) { $result .= ''.$key.''.$val."\n"; } $result .= "
\n"; $result .= ''.$this->getBook().' '.$this->getChapter(); if ( $this->getVerses() != '' ) { $result .= ':'.$this->getVerses(); } $result .= ' ('.strtoupper($this->getTranslation()).")"; $result .= "\n"; $result .= "
\n"; return($result); } /* * Reset the current verse */ function resetVerse() { $this->verse = array( 'book' => false, 'chapter' => false, 'verses' => false, 'start' => '', 'end' => '', 'html' => array() ); return(true); } /* * Set the current verse from a bible verse string */ function setVerse($string) { $this->resetVerse(); if ( ! $this->bible ) { $this->error = '
Bible version '.strtoupper($this->getTranslation()).' unavailable
'; return(false); } if ( preg_match( "/^\s*([\dIi]*\s*[A-Za-z]+)\.?\s*(\d*)\s*[:]*\s*([\d\s,-]*).*$/", $string, $v) ) { return( $this->setHtml($v[1],$v[2],$v[3]) ); } else { $this->error = '
Unknown Bible scripture reference: '.$string.'
'; return(false); } } /* * Returns formatted HTML for a given range of verses for this translation */ function getVerse() { return($this->getHtml()); } /* * Takes a free-form verse designation as an input and returns the verse */ function parseVerse($string) { if ( $this->setVerse($string) ) { return($this->getVerse()); } else { return($this->error); } } } ?>