Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Обрезка текста до и после нужной фразы с последующей заменой (https://javascript.ru/forum/misc/57671-obrezka-teksta-do-i-posle-nuzhnojj-frazy-s-posleduyushhejj-zamenojj.html)

kovalenko3331 14.08.2015 10:06

Обрезка текста до и после нужной фразы с последующей заменой
 
Уважаемые форумчане, помогите дописать скрипт.
В общем нужно чтобы с этой ссылки
<iframe src='http://sait.ru/embed/1234567891123/video' frameborder='0'  width='607' height='360' scrolling='no' allowfullscreen></iframe>
получилось вот это
http://sait.com/video/1234567891123/index.m3u8

Есть скрипт
<script language="javascript" type="text/javascript">
/*<![CDATA[*/
document.onmouseup = function(){
var t =  document.getElementsByTagName('textarea');
for (var i=0; i<t.length; i++)  {
t[i].value=t[i].value.replace(/<iframe.*? src='(.*?)'.*?<\/iframe>/gim, '$1');
}
}
/*]]>*/
</script>

который частично решает задачу, вырезает все что находится между одинарных кавычек получается вот это
http://sait.ru/embed/1234567891123/video
а нужно чтобы было вот это
1234567891123
с заменой тоже как бы все нормально
http://sait.com/video/$1/index.m3u8
единств енный вопрос как обрезать до и после нужного текста.
Только начал учить js и как это сделать пока не в моих способностях. Прошу помощи у знатоков!

cyber 14.08.2015 10:16

var url = "http://sait.ru/embed/1234567891123/v$^ideo".split("/"),
hash = url.pop().split (  "?" ) .pop(),
name = "XXXVideo" ;

if ( hash )
   name = name + "?" + hash;

url.push( name  );
url = url.join("/");

рони 14.08.2015 10:24

kovalenko3331,
var value ="<iframe src='http://sait.ru/embed/1234567891123/video' frameborder='0'  width='607' height='360' scrolling='no' allowfullscreen></iframe>" ;
     value = value.replace(/<iframe.*?src=.*?(\d+).*?<\/iframe>/gim, 'http://sait.com/video/$1/index.m3u8');
     alert(value)

kovalenko3331 14.08.2015 13:38

рони!
Огромное спасибо все именно так как нужно! Скажите еще пожалуйста, а как сделать если к примеру такая ссылка будет?
<iframe src='http://sait.ru/embed/7875cbc9dd218b79/video' frameborder='0'  width='607' height='360' scrolling='no' allowfullscreen></iframe>
а то сейчас выходит
http://sait.com/video/7875/index.m3u8
а нужно
http://sait.com/video/7875cbc9dd218b79/index.m3u8


Попробовал так
var value ="<iframe src='http://sait.ru/embed/7875cbc9dd218b79/video' frameborder='0'  width='607' height='360' scrolling='no' allowfullscreen></iframe>" ;
2
     value = value.replace(/<iframe.*?src=.*?(\d+[a-z]+).*?<\/iframe>/gim, 'http://sait.com/video/$1/index.m3u8');
3
     alert(value)
но не совсем то.
Заранее спасибо за ответ.

рони 14.08.2015 14:17

kovalenko3331,
var value ="<iframe src='http://sait.ru/embed/7875cbc9dd218b79/video' frameborder='0'  width='607' height='360' scrolling='no' allowfullscreen></iframe>" ;
     value = value.replace(/<iframe.*?embed\/([^\/]+).*?iframe>/gim, 'http://sait.com/video/$1/index.m3u8');
     alert(value)

kovalenko3331 14.08.2015 14:24

рони,
Еще раз спасибо! Работает как нужно!

Deff 14.08.2015 23:29

poни,
Лyчшe пpивязывaть распapc не к "embed/", а к пocлeдyющeмy "/video"

рони 14.08.2015 23:35

Deff,
чем лучше?

Deff 14.08.2015 23:38

рони,
embed на старых ссылках на ютуб не было

рони 15.08.2015 00:03

Deff,
ок
var value ="<iframe src='http://sait.ru/embed/7875cbc9dd218b79/video' frameborder='0'  width='607' height='360' scrolling='no' allowfullscreen></iframe>" ;
     value = value.replace(/<iframe.*?\/([^\/]+)\/video.*?iframe>/gim, 'http://sait.com/video/$1/index.m3u8');
     alert(value)

kovalenko3331 16.09.2019 22:01

рони,
Подскажите пожалуйста, как можно сделать замену ссылки
https://site.to/776eeb07pdkj/109445
на
https://site.to/embed-776eeb07pdkj.html
то есть вырезать все что между первым вторым слешем и вставить в новую ссылку. В данном случае это
776eeb07pdkj
Я сделал так
var value ="https://site.to/776eeb07pdkj/109445";
     value = value.replace(/https.*?site.to\/([^\/]+).*?(\d+)/gim, 'https://site.to/embed-$1.html');
     alert(value)
делает то что нужно, но потом повторно заменяет ссылку, так как они похожи.
Заранее спасибо за ответ. С уважением kovalenko3331

рони 17.09.2019 09:55

Цитата:

Сообщение от kovalenko3331
value.replace(/https.*?site.to\/([^\/]+).*?(\d+)$/gim,

добавьте красное

kovalenko3331 17.09.2019 14:17

ронни,
спасибо работает, но только если ссылка одна, а если вот так
'https://site.to/776eeb07pdkj/109445'
или так
'https://site.to/776eeb07pdkj/109445','https://site.to/676eeb07pdkj/609445'
уже не хочет.

laimas 17.09.2019 15:08

var a = new URL("https://site.to/776eeb07pdkj/109445"),
   link = a.origin+'/embed-'+a.pathname.substring(1).split('/', 1)[0]+'.html';


и не важно сколько параметров будет, главное чтобы нужный был первым.

рони 17.09.2019 15:39

kovalenko3331,
/https.*?site.to\/([^\/]+)\/(\d+)/gim

kovalenko3331 17.09.2019 16:25

ронни, теперь если уже есть
'https://site.to/embed-776eeb07pdkj.html'
к нему добавить
,'https://site.to/tp442flo87glkl/42688968'
получив
'https://site.to/embed-776eeb07pdkj.html','https://site.to/tp442flo87glkl/42688968'
удаляется первая часть, в итоге получается
'https://site.to/embed-tp442flo87glkl.html'
То есть, если к уже измененным ссылкам добавляются оригинальные, измененные ранее удаляются.

рони 17.09.2019 16:30

kovalenko3331,
https:\/\/site.to\/([^\/]+)\/(\d+)/gim

kovalenko3331 17.09.2019 16:41

рони,
Вы гений! Огромное спасибо!


Часовой пояс GMT +3, время: 15:25.