Javascript-форум (https://javascript.ru/forum/)
-   Серверные языки и технологии (https://javascript.ru/forum/server/)
-   -   регулярные выражения (https://javascript.ru/forum/server/11115-regulyarnye-vyrazheniya.html)

igsavenko 08.08.2010 07:21

регулярные выражения
 
Подскажите пожалуйста есть строка примерно такого вида, ну в принципе вообще не важно какая строка:
<div><span><a href='foo'>foo<a></span></div> как можно при помощи регулярных выражений получить аттрибут href. Мне нужна только ссылка. Спасибо большое.

рони 08.08.2010 09:22

можно так попробовать...
var str = "<div><span><a href='foo'>foo<a></span></div>";
var reg = /href=[\x27\x22]*([^\x27\x22\x3E\s]*)[\x27\x22]*/i;
alert(reg.exec(str)[1]);

Sweet 08.08.2010 13:31

Можно и покороче:
var str = "<div><span><a href='foo'>foo<a></span></div>";
var reg = /href='(.*)'/i;
alert(reg.exec(str)[1]);

А вообще, обычно такое через свойство .href получают

igsavenko 12.08.2010 17:16

блин.. забыл указать что на языке php :(

subzey 12.08.2010 17:42

Обязательно на регулярках? А то можно через «родной» HTML-парсер:

$document = DOMDocument();
$document->loadHTML("<div><span><a href='foo'>foo<a></span></div>");
echo $document->getElementsByTagName("a")->item(0)->attr("href");

chippolino 15.08.2010 15:48

<?php

	$str = "<div><span><a href=\"foo\">foo<a></span></div>";
	$reg = "/href=('|\").*('|\")/i";
	preg_match($reg, $str, $m);
	echo str_replace('href=','',str_replace('"','',$m[0]));
	
?>

mousesport 19.05.2013 22:01

А у меня на оборот:
<div><span><ul><li>мой пример <a href='foo'><b>нужный_текст_777</b><a></li></ul></span></div>


сделал так:
/мой пример [\s\S]*?<a[^>]*>([\s\S]*?)<\/a>/i

хотел бы получить: нужный_текст_777
но получаю только: 777

подскажите где поправить?

рони 19.05.2013 22:24

Цитата:

Сообщение от mousesport
А у меня на оборот:
<div><span><ul><li>мой пример <a href='foo'><b>нужный_текст_777</b><a></li></ul></span></div>

var str = "<div><span><ul><li>мой пример <a href='foo'><b>нужный_текст_777</b></a></li></ul></span></div>"
var reg = /мой пример [\s\S]*?<a[^>]*>([\s\S]*)<\/a>/i;
alert(reg.exec(str)[1]);

рони 19.05.2013 22:33

mousesport,
var str = "<div><span><ul><li>мой пример <a href='foo'><b>нужный_текст_777 а_далее ненужный_текст</b></a></li></ul></span></div>"
var reg = /мой пример [\s\S]*?<b[^>]*>(\S*)/i;
alert(reg.exec(str)[1]);

quirksmode 20.05.2013 03:05

/href=('|")(.*?)\$1/i


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