регулярные выражения
Подскажите пожалуйста есть строка примерно такого вида, ну в принципе вообще не важно какая строка:
<div><span><a href='foo'>foo<a></span></div> как можно при помощи регулярных выражений получить аттрибут href. Мне нужна только ссылка. Спасибо большое. |
можно так попробовать...
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]); |
Можно и покороче:
var str = "<div><span><a href='foo'>foo<a></span></div>"; var reg = /href='(.*)'/i; alert(reg.exec(str)[1]); А вообще, обычно такое через свойство .href получают |
блин.. забыл указать что на языке php :(
|
Обязательно на регулярках? А то можно через «родной» HTML-парсер:
$document = DOMDocument(); $document->loadHTML("<div><span><a href='foo'>foo<a></span></div>"); echo $document->getElementsByTagName("a")->item(0)->attr("href"); |
<?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])); ?> |
А у меня на оборот:
<div><span><ul><li>мой пример <a href='foo'><b>нужный_текст_777</b><a></li></ul></span></div> сделал так: /мой пример [\s\S]*?<a[^>]*>([\s\S]*?)<\/a>/i хотел бы получить: нужный_текст_777 но получаю только: 777 подскажите где поправить? |
Цитата:
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]); |
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]); |
/href=('|")(.*?)\$1/i
|
var str = "<div><span><ul><li>мой пример <a href='foo'><b>нужный_текст_777 а_далее ненужный_текст</b></a></li></ul></span></div>" var href = str.split(/(?:href=)['"]?([^'" >]+)['" >]/i)[1] alert(href); |
от понабежало извращенцев всех мастей. Правильный вариант старина subzey указал.
|
Aetae,
:) Простые регулярки - это как концовка партии в шашки - завлекают вариантом собственного решения. (независимо от ТS вопроса) Ксать "треугольник Петрова" лет в 7 завлёк на неделю |
Часовой пояс GMT +3, время: 19:27. |