2013-07-19 5 views
0

Привет У меня есть информация, отображаемая на HTML-странице на веб-странице.получить href из тега <A> в html

Некоторые материалы могут содержать:

<p> 
<a href="/documents/content/files/my_mp3.mp3" target="_blank"> 
    <img alt="" src="/pictures/content/images/play.jpg" style="width: 153px; height: 49px;"><br> 
</a> 
</p> 

Что я ищу сделать, это взять весь тег или даже просто «HREF» и сохранить его в переменной ... так что я могу отобразите его в другом месте (т.е. отобразите его в сводке).

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

Я думал что-то вроде: если < а> Тег HREF содержит».mp3" , то получите„HREF“

< а> тег не содержит идентификатор или RUNAT. Он вводится с использованием javascript html-редактора, поэтому нет id или runat.

Кто-нибудь знает, как это можно сделать?

Благодаря

+0

Как ваш HTML генерируется? Кроме того, можете ли вы привести пример того, как вы пытаетесь использовать информацию, которую вы извлекаете? – GHC

+0

Вы можете написать код 'php', который сохранит значение переменной – mike27015

+0

@GHC. Html вводится пользователем в CMS пользователем для всего продукта. – thegunner

ответ

1

Я предполагаю, что ваши теги вы используете ASP.NET, поэтому ..

<a href="/documents/content/files/my_mp3.mp3" target="_blank" 
               id="myAnchor" runat="server"> 

«Runat» позволяет ссылаться на него в коде позади от «ид «:

string href = myAnchor.HRef; 

строка„HREF“теперь =„/documents/content/files/my_mp3.mp3“, то вы можете разбить его на части, как вам угодно.

+0

К сожалению, href генерируется в ckeditor, поэтому нет идентификатора для тега < a > ... – thegunner

+0

Что вы пытаетесь с ним сделать? Невозможно ли перейти к Visual Studio или тому подобное? Механик id/runat довольно явственен для ASP.NET. –

+0

Не совсем Сэм. Тег < a > не содержит идентификатора или руната. Он вводится с использованием javascript в редакторе html, поэтому нет id или runat. – thegunner

0

Если вы хотите использовать сторону его сервера, то у вас есть два варианта:

А. добавить в RUNAT и идентификатор атрибута:

`<a href="/documents/content/files/my_mp3.mp3" id="myLink" runat="server" target="_blank">` 

Затем вы можете получить доступ к HREF по телефону myLink.HRef

B. Вы можете использовать жерех: серверный элемент управления гиперссылкой вместо

`<asp:Hyperlink NavigateUrl="yourhref.html" id="myLink" runat="server" />` 

Это будет оказана в качестве якоря и вы тоже можете получить доступ к HREF по телефону myLink.NavigateUrl


EDIT:

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

Итак, сначала добавьте скрытый элемент управления вводом. Этот элемент управления временно сохранит ваш href, чтобы вы могли получить к нему доступ, когда вы отправляете сообщение назад.

<input type="hidden" runat="server" id="tempContainer" />

, то вам необходимо запустить некоторые JavaScript после создания гиперссылки (или перед отправкой обратно). Я использую jquery в этом примере, но вы также можете использовать простой javascript.

$('.<%=tempContainer.ClientID %>').val($('.some selector to your link').attr('href')); 

Это сохраняет ваше значение href в скрытом вводе. Так что, когда вы размещаете назад, вы можете получить доступ к значению его по телефону: tempContainer.Value

+0

Тег < a > не содержит идентификатор или рунат. Он вводится с использованием javascript html-редактора, поэтому нет id или runat. – thegunner

+0

@thegunner см. Мой обновленный ответ – Mel

0

Хорошо, я думаю, что мне удалось получить это:

 If strContent.Contains(".mp3""") Then 'check if content contains .mp3 

      'find the href tag usin regex 
      Dim pattern As String = "(href=\s*\""(.+?)\"")" 
      Dim html As String = strContent 
      Dim href() As String = Regex.Split(html, pattern) 
      Dim href1 As String = href(1) 'gets the href tag 

      'make sure that this href contains contains .mp3 (and it's not some other) 
      If href1.Contains(".mp3""") Then 

       'this is a hidden control to display on summary main category page           
       Dim atemp As hyperlink = e.Item.FindControl("lnkSound") 

       'remove the href= and quotes from the href 

       'set the naviate url 
       atemp.navigateurl = href1.Replace("href=", "").Replace(chr(34), "") 
       atemp.target = "_blank" 

       'make it visible as hidden for summarys that don't contain .mp3 
       atemp.visible = True 

      End If 
     End If 

отсортирован.

2

Описание

Это выражение будет:

  • матча якорных тегов, которые имеют атрибут HREF, который заканчивается в .mp3
  • позволят избежать сложных HTML крайних случаев

    <a\b(?=\s)(?=(?:[^>=]|='[^']*'|="[^"]*"|=[^'"][^\s>]*)*?\shref="([^"]*.mp3)")(?:[^>=]|='[^']*'|="[^"]*"|=[^'"\s]*)*\s?>.*?<\/a>

enter image description here

Пример

Живой пример: http://www.rubular.com/r/CMmFQDq0qX

Образец текста

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

<p> 
<a href="/documents/content/files/my_mp3.mp3" target="_blank"> 
    <img alt="" src="/pictures/content/images/play.jpg" style="width: 153px; height: 49px;"><br> 
</a> 
<a onmouseover=' href="NotTheMP3Yourelookingfor.mp3" ; if (6 > x) { funRotate(href) ; } ; ' href="/documents/content/files/DifficultToFind.mp3" target="_blank"> 
    <img alt="" src="/pictures/content/images/play.jpg" style="width: 153px; height: 49px;"><br> 
</a> 
</p> 

Матчи

Группа 0 будет иметь весь <a..>..</a> тег
Группа 1 будет иметь только HREF значение

[0][0] = <a href="/documents/content/files/my_mp3.mp3" target="_blank"> 
    <img alt="" src="/pictures/content/images/play.jpg" style="width: 153px; height: 49px;"><br> 
</a> 
[0][1] = /documents/content/files/my_mp3.mp3 


[1][0] = <a onmouseover=' href="NotTheMP3Yourelookingfor.mp3" ; if (6 > x) { funRotate(href) ; } ; ' href="/documents/content/files/DifficultToFind.mp3" target="_blank"> 
    <img alt="" src="/pictures/content/images/play.jpg" style="width: 153px; height: 49px;"><br> 
</a> 
[1][1] = /documents/content/files/DifficultToFind.mp3 
+1

Off Topic: Было ли это изображение создано на основе вашего регулярного выражения, если да, то какую программу вы использовали для этого? – webnoob

+1

Да, это было создано на основе моего регулярного выражения. Я использую http://www.debuggex.com/. Он довольно гладкий и работает в режиме реального времени по мере ввода. –

+0

Спасибо большое :) – webnoob