Регулярное выражение только для сайта - PullRequest
0 голосов
/ 26 мая 2010

Я новичок в регулярных выражениях.

Мне нужно найти только веб-сайт в некотором тексте, и я ищу регулярное выражение, способное найти строки вроде:

www.my.home, http://my.site.it

Но это регулярное выражение не должно находить строки вроде:

address@my.site.it или если сайт уже находится внутри html тэга

<a href="http://www.my.site.com/">
  <span style="font-style: normal;">www.mambo-test.org</span>
</a>

Я пробовал с этим:

\ b ((https?: // [^] ) | (www. [^] ))

но он также находит сайт в href и между тегом:

<a href="http://www.my.site.com/">
  <span style="font-style: normal;">www.mambo-test.org</span>
</a>

и я не знаю как, кроме этого случая.

Ответы [ 2 ]

2 голосов
/ 27 мая 2010

То, что вы пытаетесь сделать, называется анализом HTML-кода с помощью регулярных выражений .

Прежде всего, я чувствую твою боль.

Во-вторых, здесь подробно объясняется почему вы не должны этого делать .

В-третьих, если ваши клиенты вставляют веб-ссылки в многофункциональный текстовый редактор, и иногда они делают это правильно, а иногда нет, ну ... это определенно плохая практика, и таких людей следует обучать. Если им лень нажимать кнопку «ссылка» в редакторе форматированного текста, их текст будет рассматриваться как простой текст, а не как ссылка. Они скоро поймут.

Далее, какой форматированный текстовый редактор вы используете? TinyMCE предлагает целый набор функций и плагинов, которые позволяют вам легко / предварительно обрабатывать текст, вставленный пользователем. Это может быть проще, чем пытаться редактировать этот текст в PHP.

В-пятых, если вам все еще нужно это сделать, вам может понадобиться этот учебник о том, как анализировать HTML для поиска ссылок .

1 голос
/ 26 мая 2010

Может быть это решит вашу проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...