http://bibref.hebtools.com/bibref.php?book=BOOK_NAME&verse=VERSE_REF&src=SRC_KEY
Book name: Verse(s):
Source: !All sources1550 Stephanus New Testament (BibleGateway)1881 Westcott-Hort New Testament (BibleGateway)1894 Scrivener New Testament (BibleGateway)1934 Vietnamese Bible (BibleGateway)21st Century King James Version (BibleGateway)ASB Psalter - The Liturgical Psalter (Oremus)Albanian Bible (BibleGateway)All Targums on a verse (Comprehensive Aramaic Lexicon)American Standard Version (BibleGateway)Amplified Bible (BibleGateway)Ang Salita ng Diyos (BibleGateway)Arabic Life Application Bible (BibleGateway)Aramaic Targum Onkelos (Mechon Mamre)BCP Psalter (Oremus)BibleBrowser.comBibleCommenter.com (BibleBrowser)Biblia Sacra Vulgata (BibleGateway)Biblia en Lenguaje Sencillo (BibleGateway)Bulgarian Bible (BibleGateway)Castillian (BibleGateway)Chinese Union Version (BibleGateway)Common Worship Psalter (Oremus)Conferenza Episcopale Italiana (BibleGateway)Contemporary English Version (BibleGateway)Croatian Bible (BibleGateway)Darby Translation (BibleGateway)Det Norsk Bibelselskap 1930 (BibleGateway)Dette er Biblen pA¥ dansk (BibleGateway)Dios Habla Hoy (BibleGateway)Douay-Rheims 1899 American Edition (BibleGateway)English Standard Version (BibleGateway)Greek audio of New Testament (greeklatinaudio.com)Haitian Creole Version (BibleGateway)Hebrew - no vowels; Masoretic spelling (Mechon Mamre)Hebrew - plene spelling (Mechon Mamre)Hebrew MP3 recordings (The United Bible Society, © 1976)Hebrew verse recordings (bible.ort.org)Hebrew with Cantillation Marks (Mechon Mamre)Hebrew with Vowels (Mechon Mamre)Hebrew-English - paraellel MT and JPS 1917 (Mechon Mamre)Het Boek (BibleGateway)Hiligaynon Bible (BibleGateway)Holman Christian Standard Bible (BibleGateway)Hungarian KAiroli (BibleGateway)Icelandic Bible (BibleGateway)Il Nuovo Testamento in Lingua Moderna (BibleGateway)Jewish Publication Society 1917 (Mechon Mamre)João Ferreira de Almeida Atualizada (BibleGateway)Judaica Press Complete Tanach (Chabad.org)Judaica Press Complete Tanach with Rashi (Chabad.org)King James Version (BibleGateway)Korean Bible (BibleGateway)La Bible du Semeur (BibleGateway)La Biblia de las Américas (BibleGateway)La Nuaova Diodati (BibleGateway)Latin audio of New Testament (greeklatinaudio.com)Levande Bibeln (BibleGateway)Louis Segond (BibleGateway)Luther Bibel 1545 (BibleGateway)Maori Bible (BibleGateway)Navigating the Bible II (bible.ort.org)New American Bible (USCCB)New American Standard Bible (BibleGateway)New International Reader's Version (BibleGateway)New International Version (BibleGateway)New International Version - UK (BibleGateway)New King James Version (BibleGateway)New Life Version (BibleGateway)New Living Translation (BibleGateway)New Revised Standard Version (Oremus)Nova Versão Internacional (BibleGateway)Nueva Versión Internacional (BibleGateway)Nádej pre kazdého (BibleGateway)O Livro (BibleGateway)Online Parallel Bible (bible.cc)Reimer 2001 (BibleGateway)Reina-Valera 1960 (BibleGateway)Reina-Valera 1995 (BibleGateway)Reina-Valera Antigua (BibleGateway)Romanian (BibleGateway)Romanian Cornilescu Version (BibleGateway)Russian Synodal Version (BibleGateway)ScriptureText.com multilingual (BibleBrowser)Scrollscraper TikkunSlovo Zhizny (BibleGateway)Slovo na cestu (BibleGateway)Svenska 1917 (BibleGateway)Swahili New Testament (BibleGateway)Targum Neofiti by chapter (Comprehensive Aramaic Lexicon)Targum Onqelos by chapter (Comprehensive Aramaic Lexicon)Targum Pseudo-Jonathan by chapter (Comprehensive Aramaic Lexicon)The Living Torah by Aryeh Kaplan (bible.ort.org)The Message (BibleGateway)Worldwide English (New Testament) (BibleGateway)Wycliffe New Testament (BibleGateway)Young's Literal Translation (BibleGateway)
Many variants of bible books are allowed. See biblebooks.txt.
For example:
Note that not all sources necessarily support all levels of specification. Some may not handle ranges, for instance.
The following were loaded from biblesrcs.txt
<?php /* Bible Verse Finder (bibref) Version 0.930 By Joel Nothman, 2005. jnothman at student dot usyd dot edu dot au Free for distribution and derivation, but if you think it's that good, please cite the author! */ /* HISTORY: - 0.930 - added Comprehensive Aramaic Lexicon sources - All targums on a verse, and pentateuch chapters - 0.924 - added bible.ort.org Navigating the Bible II and Hebrew recordings - 0.922 - added ScrollScraper Tikkun source - 0.920 - added support for Hebrew Unicode numerals - 0.910 - fixed 2 Timothy bug - 0.901 - fixed namespace-related bugs - 0.900 - basic implementation listing all sources for given book - 0.861 - Implemented own Roman numeral conversion (due to licensing) - 0.860 - Added bible.ort.org chapters (The Living Torah trans) - 0.855 - Added three Psalters from Oremus.org - 0.850 - Added John Isett's {biblebrowser,biblecommenter,scripturetext}.com - 0.846 - Fix bug wit NRSV - 0.845 - Added Greek and Latin NT recordings (greeklatinaudio.com) - 0.842 - Added Hebrew MP3 recordings (United Bible Society, 1976; via snunit) - 0.840 - listing of included canons for each source - 0.825 - better handling of single-book references - 0.820 - Added New Revised Standard Version (from bible.oremus.org) - 0.810 - Added the New American Bible (from USCCB) - 0.800 - Added chabad.org's publication of Judaica Press Complete Tanach - 0.748 - Allow EN DASH to be used instead of - in verse reference - 0.746 - Fix Isiah -> Isaiah - 0.744 - Fix 2sa for Mechon Mamre - 0.743 - support for Online Parallel Bible at bible.cc - 0.741 - Minor num_conv() update TODO: - add Peshitta text (?), and parallel English-Vulgate (latinvulgate.com) - preferences when listing all sources - all Jewish sources, all Catholic sources, etc. - Taking multiple sources for input and defaulting to others if first unavailable - Other numerals eg Hebrew - Other book name languages (partic Heb) / Unicode support - ?Other texts */ error_reporting(E_ALL ^ E_NOTICE); define('SRC_FILE', 'biblesrcs.txt'); define('BOOK_FILE', 'biblebooks.txt'); $INCL_TYPES = 'MTPND'; function get_book_name($book) { $book = strtolower(str_replace(array('.','-'), '', trim($book))); // remove unnecessary characters $fbooks = fopen(BOOK_FILE, 'r'); while ($line = fgets($fbooks)) { $names = split(',', substr($line, 2)); foreach ($names as $n) { if (trim($n) == $book) { return array($line[0], trim($names[0])); } } } fclose($fbooks); } function roman_to_int($r) { $r = strtolower($r); $rvals = array('i'=>1, 'v'=>5, 'x'=>10, 'l'=>50, 'c'=>100, 'd'=>500, 'm'=>1000); $n = 0; for ($i = 0; $i < strlen($r); $i++) { if (($i == strlen($r) - 1) or ($rvals[$r[$i]] >= $rvals[$r[$i+1]])) $n += $rvals[$r[$i]]; else $n -= $rvals[$r[$i]]; } return $n; } function hebrew_to_int($h) { $n = 0; for ($i = 0; $i < strlen($h); $i++) { $pos = ord($h{$i}) - 0x8f; switch($pos) { case 11: case 12: $n+=20; break; case 13: $n+=30; break; case 14: case 15: $n+=40; break; case 16: case 17: $n+=50; break; case 18: $n+=60; break; case 19: $n+=70; break; case 20: case 21: $n+=80; break; case 22: case 23: $n+=90; break; default: if ($pos <= 10) $n+=$pos; elseif ($pos <= 27) $n += ($pos-23)*100; } } return $n; } function num_conv($n) { if (!$n) return; if ($n{0} >= '0' and $n{0} <= '9') return intval($n); if ($n{0} <= 'z') { // assume Roman return roman_to_int(strtoupper($n)); } if ($n{0} == "\xD7") { // assume Hebrew unicode return hebrew_to_int($n); } die('Unknown number form.'); } function get_src_builder($src) { $fsrcs = fopen(SRC_FILE, 'r'); while ($line = fgets($fsrcs)) { list($src_title, $inclusions, $keywords, $function) = split("\t", $line); if ($src_title[0] == '#') continue; $keywords = split(" ", $keywords); foreach ($keywords as $key) { if (!($key = trim($key))) continue; if (strtolower($key) == $src) return $function; } } fclose($fsrcs); } function biblegateway($num) { global $ubook, $v_range; return "http://www.biblegateway.com/passage/?search=$ubook%20$v_range&version=$num"; } function mamre_book($book) { switch ($book) { case 'genesis': return '01'; case 'exodus': return '02'; case 'leviticus': return '03'; case 'numbers': return '04'; case 'deuteronomy': return '05'; case 'joshua': return '06'; case 'judges': return '07'; case '1 samuel': return '08a'; case '2 samuel': return '08b'; case '1 kings': return '09a'; case '2 kings': return '09b'; case 'isaiah': return '10'; case 'jeremiah': return '11'; case 'ezekiel': return '12'; case 'hosea': return '13'; case 'joel': return '14'; case 'amos': return '15'; case 'obadiah': return '16'; case 'jonah': return '17'; case 'micah': return '18'; case 'nahum': return '19'; case 'habakkuk': return '20'; case 'zephaniah': return '21'; case 'haggai': return '22'; case 'zechariah': return '23'; case 'malachi': return '24'; case '1 chronicles': return '25a'; case '2 chronicles': return '25b'; case 'psalms': return '26'; case 'job': return '27'; case 'proverbs': return '28'; case 'ruth': return '29'; case 'songs': return '30'; case 'ecclesiastes': return '31'; case 'lamentations': return '32'; case 'esther': return '33'; case 'daniel': return '34'; case 'ezra': return '35a'; case 'nehemiah': return '35b'; } } function mamre($path, $ext=".htm") { global $book, $s_chap, $s_vers; $bid = mamre_book($book); if (!$bid) die("This book ($book) not in Mechon Mamre's collection."); $chap = dechex(intval($s_chap/10)) . ($s_chap % 10); if ($path[4] != ':') $path = "http://www.mechon-mamre.org".$path; return "$path$bid$chap$ext#$s_vers"; } function usccb_nab() { global $book, $s_chap, $s_vers, $no_chaps; $mybook = str_replace(' ', '', $book); if ($mybook != "songs") $path = "$mybook/$mybook"; else $path = "songs/song"; if (!$no_chaps) $path = $path . $s_chap; return "http://www.nccbuscc.org/nab/bible/$path.htm#v$s_vers"; } function parallel_bible($domain) { global $book, $s_chap, $s_vers; $mybook = str_replace(' ', '_', $book); return "http://$domain/$mybook/$s_chap-$s_vers.htm"; } function oremus($version) { global $ubook, $v_range; return "http://bible.oremus.org/?passage=$ubook+$v_range&version=$version"; } function chabadorg($rashi) { global $book, $s_chap; require('bibchabad.php'); $aid = $chabad_lookup[$book][intval($s_chap)]; if (!$aid) die("This book/chapter ($book $s_chap) is not in Chabad.org's Judaica Press Complete Tanach."); return "http://www.chabad.org/article.asp?aid=" . $aid . ($rashi ? '&showrashi=true' : ''); } $ort_books = array( 'genesis' => 1, 'exodus' => 2, 'leviticus' => 3, 'numbers' => 4, 'deuteronomy' => 5, ); function ort_chap() { global $ort_books, $book, $s_chap; return "http://bible.ort.org/books/pentd2.asp?ACTION=displaypage&BOOK={$ort_books[$book]}&CHAPTER=$s_chap"; } include("bibort.php"); function ort_ntb() { global $ort_books, $book, $s_chap, $s_vers; $ortb = $ort_books[$book]; return "http://bible.ort.org/books/torahd5.asp?action=displaypage&book=$ortb" . "&chapter=$s_chap&verse=$s_vers&portion=".verse_parsha($ortb, $s_chap, $s_vers); } function ort_aud() { global $ort_books, $book, $s_chap, $s_vers; $ortb = $ort_books[$book]; return sprintf("http://bible.ort.org/webmedia/t%d/%02d%02d.ra", $ortb, $s_chap, $s_vers); } function helding_ntaudio($lang) { global $book, $s_chap; $mybook = str_replace(' ', '', $book); $short = substr($mybook, 0, 3); if ($mybook == 'philemon') $short = 'phe'; $file = sprintf("$short%02d{$lang[0]}", $s_chap); if ($lang == "greek" and ($short == 'mat' or $short == 'rev') or $lang == 'latin' and $short == 'rev') $file = strtoupper($file); return "http://www.helding.net/greeklatinaudio/$lang/$mybook/$file.mp3"; } function scrollscraper() { global $ort_books, $book, $s_chap, $s_vers, $e_chap, $e_vers; return "http://scrollscraper.adatshalom.net/scrollscraper.cgi?book={$ort_books[$book]}&startc=$s_chap&startv=$s_vers&endc=$e_chap&endv=$e_vers"; } function zero_pad($n, $d=2) { return str_pad($n, $d, '0', STR_PAD_LEFT); } function cal_targ_pentateuch($targum='onqelos') { global $book, $s_chap, $s_vers; $book_nums = array( 'genesis', 'exodus', 'leviticus', 'numbers', 'deuteronomy', ); $book_num = array_search($book, $book_nums) + 1; return "http://cal1.cn.huc.edu/cgi-bin/heb$targum.cgi?verse=" . $book_num. zero_pad($s_chap) . zero_pad($s_vers); } function cal_all_targum() { global $book, $s_chap, $s_vers; $books = array('genesis', 'exodus', 'leviticus', 'numbers', 'deuteronomy', 'joshua', 'judges', '1 samuel', '2 samuel', '1 kings', '2 kings', 'isaiah', 'jeremiah', 'ezekiel', 'hosea', 'joel', 'amos', 'obadiah', 'jonah', 'micah', 'nahum', 'habakkuk', 'zephaniah', 'haggai', 'zechariah', 'malachi', 'psalms', 'job', 'songs', 'ruth', 'ecclesiastes', 'lamentations', 'proverbs', '1 chronicles', '2 chronicles', 'esther'); $book_num = zero_pad(array_search($book, $books) + 1); return "http://cal1.cn.huc.edu/cgi-bin/showtargum.cgi?bookname=$book_num&chapter=$s_chap&verse=$s_vers&Hebrew=ON&Peshitta=ON"; } function show_options($src='!') { global $book, $book_canon; $srcs = array(); $fsrcs = fopen(SRC_FILE, 'r'); while ($line = fgets($fsrcs)) { list($src_title, $inclusions, $keywords, $function) = split("\t", $line); if (trim($function) and strpos($inclusions, $book_canon) !== false) eval('$srcs[$src_title] = '.$function.';'); } fclose($fsrcs); ksort($srcs); header('Content-type: text/html; charset=utf-8'); ?><html><head><title>Bible Verse Finder (bibref): <?=$_GET['book']?> <?=$_GET['verse']?></title></head><body> <h1>View <?=$_GET['book']?> <?=$_GET['verse']?> in:</h1> <ul><? foreach ($srcs as $title => $url) print '<li><a href="'.$url.'">'.$title.'</a></li>'; ?></ul></body></html><? } list($book_canon, $book) = get_book_name($_GET['book']); if ($book) { switch ($book) { case "obadiah": case "philemon": case "2 john": case "3 john": case "jude": $no_chaps = true; break; default: $no_chaps = false; } $ubook = urlencode($book); $verse = str_replace("\xe2\x80\x93", '-', strtolower($_GET['verse'])); // endash -> - $nreg = '([0-9]+|[ivxlcm]+|['."\x90-\xAA"."\xD7]+)"; $reg = '/^'.$nreg.'\.?([:. ]'.$nreg.')?(\s*-\s*'.$nreg.'\.?([:. ]'.$nreg.')?)?/i'; preg_match($reg, trim($verse), $matches); $s_chap = num_conv($matches[1]); $s_vers = num_conv($matches[3]); $e_chap = num_conv($matches[5]); $e_vers = num_conv($matches[7]); if (!$e_chap) { // eg 15 or 15:30 $e_chap = $s_chap; $e_vers = $s_vers; } elseif ($s_vers and $e_chap and !$e_vers) { // eg 15:30-35 $e_vers = $e_chap; $e_chap = $s_chap; } if ($no_chaps && !$s_vers) { $s_vers = $s_chap; $e_vers = $e_chap; $s_chap = $e_chap = 1; } if (!$s_vers) $s_vers = 1; if (!$s_chap) $s_chap = 1; //print "$book ($s_chap, $s_vers) to ($e_chap, $e_vers)"; if ($s_vers == 1 and !$e_vers) $v_range = "$s_chap-$e_chap"; /*elseif ($no_chaps) $v_range = "$s_vers-$e_vers";*/ // it seems things prefer Ob 1:5 to Ob 5 else $v_range = "$s_chap:$s_vers-$e_chap:$e_vers"; $src = strtolower(trim($_GET['src'])); if (!$src) $src = '!'; $builder = trim(get_src_builder($src)); if (!$builder) { show_options($src); exit(); } eval ('$url = '.$builder.';'); header ("Location: $url\n"); exit(); } $srcs = array(); $fsrcs = fopen(SRC_FILE, 'r'); while ($line = fgets($fsrcs)) { list($src_title, $inclusions, $keywords, $function) = split("\t", $line); if ($src_title[0] == '#') continue; $keywords = split(' ', $keywords); $inclbools = array(); for ($i = 0; $i < strlen($INCL_TYPES); $i++) { $inclbools[$i] = (strpos($inclusions, $INCL_TYPES[$i]) !== false); } $sincls[$src_title] = $inclbools; $srcs[$src_title] = $keywords; } ksort($srcs); header('Content-type: text/html; charset=utf-8'); ?><html><head><title>Bible Verse Finder (bibref)</title></head> <body><h1>Bible Verse Finder</h1> <? if ($_GET['book']) { print "UNKNOWN BOOK REFERNCE: ".$_GET['book']; } ?> <h2>Usage</h2> <p>http://<?=$_SERVER['SERVER_NAME'].$_SERVER['SCRIPT_NAME']?>?book=<a href="#bookref">BOOK_NAME</a>&verse=<a href="#verseref">VERSE_REF</a>&src=<a href="#srcref">SRC_KEY</a></p> <form action="<?=$_SERVER['SCRIPT_NAME']?>" method="GET"> <p><label for="inpbook"><a href="#bookref">Book name:</a> </label><input name="book" value="<?=$_GET['book']?>" id="inpbook" size="20"> <label for="inpverse"><a href="#verseref">Verse(s):</a> </label><input name="verse" value="<?=$_GET['verse']?>" id="inpverse" size="10"></p> <p><label for="inpsrc"><a href="#srcref">Source:</a> </label><select name="src" id="inpsrc"> <? foreach ($srcs as $sname => $skeys) { printf ('<option value="%s">%s</option>', array_shift($skeys), $sname); } ?> </select> <input type="submit"></p> <h3 id="bookref">Book name</h3> <p>Many variants of bible books are allowed. See <a href="<?=BOOK_FILE?>"><?=BOOK_FILE?></a>.</p> <h3 id="verseref">Verse reference</h3> <p>For example:</p> <ul> <li>15</li> <li>15:30</li> <li>15-16</li> <li>15:30-32</li> <li>15:30-16:9</li> <li>15.30 - 16:9</li> <li>xv.30 - 16:9</li> <li>xv. 30</li> <li>XV. xxx</li> </ul> <p>Note that not all sources necessarily support all levels of specification. Some may not handle ranges, for instance.</p> <h3 id="srcref">Sources</h3> <p>The following were loaded from <a href="<?=SRC_FILE?>"><?=SRC_FILE?></a></p> <table style="border: 1px solid #888; background: #eef; font-size: 80%;"> <thead><tr><th>Source Title</th><? for ($i = 0; $i < strlen($INCL_TYPES); $i++) print "<th>{$INCL_TYPES[$i]}</th>" ?><th colspan="5">Src Keys</th></tr></thead> <tbody> <? foreach ($srcs as $sname => $skeys) { print "<tr><td>$sname</td>"; foreach ($sincls[$sname] as $b) print "<td>".($b ? '✓' : '')."</td>"; foreach ($skeys as $k) print "<td>$k</td>"; print "</tr>\n"; } ?> </tbody></table> <h4>Canon inclusion codes</h4> <dl> <dt>M - Mosaic Pentateuch</dt> <dd>Genesis, Exodus, Leviticus, Numbers, Deuteronomy</dd> <dt>T - remainder of Tanakh (Christian Old Testament)</dt> <dd>Joshua, Judges, Samuel, Kings, Isaiah, Jeremiah, Ezekiel, Hosea, Joel, Amos, Obadiah, Jonah, Micah, Nahum, Habakkuk, Zephaniah, Haggai, Zechariah, Malachi, Chronicles, Psalms, Job, Proverbs, Ruth, Song of Songs, Ecclesiastes, Lamentations, Esther, Daniel, Ezra, Nehemiah</dd> <dt>P - Psalms</dt> <dd>Book of Psalms</dd> <dt>N - Christian New Testament</dt> <dd>Matthew, Mark, Luke, John, Acts, Romans, Corinthians, Galatians, Ephesians, Philippians, Colossians, Thessalonians, Timothy, Titus, Philemon, Hebrews, James, Peter, John, Jude, Revelation</dd> <dt>D - Deuterocanonical texts</dt> <dd>Tobit, Judith, Maccabees, Wisdom of Solomon, Sirach, Baruch</dd> </dl> <h2>Script source</h2> <div style="margin: 2em; background: #eef; border: 2px solid #888; padding: 1em; font-size: 80%"> <? highlight_file(__FILE__); ?></div></body> </html><? die(); ?>