2013-03-20 2 views
1

У меня есть строка, которая возвращается с PHP через AJAX. Значение строки, как это:Вырезать строку в строке

<img src="/images/error.png"/>Invalid name` 

Есть ли способ, чтобы вырезать строку, начиная с < и заканчивая >?

Мне нужна только строка <img/>. Я не хочу возвращать только <img/> из PHP, потому что полная строка используется на другой странице.

+0

Будут ли теги внутри img src, которые могут быть «>»? Всегда ли оно начинается с «<»? – user829323

+0

Чтобы «вырезать» строку определенным разделителем строк, используйте метод «split»: 'string.split (" <")'. Если эта строка не является статической, но может содержать произвольный HTML, лучше использовать DOM для анализа HTML и получения нужной вам части. –

+0

Как строка может отличаться? –

ответ

3

Что это вы имели в виду? Это предупреждает '<img src="/images/error.png"/>'

jsFiddle

var img = '<img src="/images/error.png"/>Invalid name'; 
var slice = img.slice(0, img.indexOf('>') + 1); 
alert(slice); 
+0

Спасибо. Получил то, что мне нужно. –

1

Вы можете использовать split() method и добавить обратно в последний символ.

var returnedString = '<img src="/images/error.png"/>Invalid name'; 
var returnedImage = returnedString.split('>')[0] +'>'; 
1
var str = '<img src="/images/error.png"/>Invalid name'; 
alert(str.substring(str.indexOf('<'), str.indexOf('>')+1)); 

Edit: Если это действие будет повторяться много раз, то производительность следует также учитывать. см 2 версии для каждого чистого JS ответ вы получили так далеко: первый 3 предположим тег начинается с 0 («<»), последние 3 не: http://jsperf.com/15512887

теперь я горжусь собой, даже если мой ответ не будет выбран один :-)

+1

+1 'slice' vs' substring', вероятно, немного в пользу подстроки, поскольку он предназначен только для строк, где «slice» работает со всеми массивами. Сплит намного медленнее, потому что он разбивает массив на два, где мы только заботимся о первом. –

0

Если вы явно что получить начальный тег только строки, то:

var s = ' <img src="/images/error.png"/>Invalid name'; 

var tag = '<' + s.split(/\W+/g)[1] + '>'; 

Хотя для надежности вы должны сделать что-то вроде:

var parts = s.split(/\W+/g); 
var tag = parts.length? '<' + parts[1] + '>' : ''; 
Смежные вопросы