function strpos( haystack, needle, offset){ // Find position of first occurrence of a string
//
// + original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
var i = haystack.indexOf( needle, offset ); // returns -1
return i >= 0 ? i : false;
}
Слишком простая функция, а если нужно получить позицию не 1, а скажем... 3 совпадения? Предлагаю свой вариант:
/* Примеры. 1. strpos({str: 'Bla-bla-bla...', find: '.', index: 3}); // Вернёт 13 2. strpos({str: 'Bla-bla-bla...', find: '.', index: 4}); // Вернёт null 3. strpos({str: 'Bla-bla-bla...', find: 'bla', index: 1}); // Вернёт 4 */ function strpos(data) { // Created by Mark Tali [webcodes.ru] // Example. Return 8, but if index > 2, then return null // strpos({str: 'Bla-bla-bla...', find: 'bla', index: 2}); var haystack = data.str, needle = data.find, offset = 0; for (var i = 0; i < haystack.split(needle).length; i++) { var index = haystack.indexOf(needle, offset + (data.index != 1 ? 1 : 0)); if (i == data.index - 1) return (index != -1 ? index : null); else offset = index; } }а что за параметр offset в первой ф-ции ?
Индекс, начиная с которого производить поиск.
Спасибо, очень пригодилось
Спасибо большое! Пригодилось.