регулярные выражения
Подскажите пожалуйста есть строка примерно такого вида, ну в принципе вообще не важно какая строка:
<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
|
| Часовой пояс GMT +3, время: 10:27. |