PHP извлечь ссылку из тега [duplicate]
Возможные Дубликаты:
манипуляция строками PHP: извлечение hrefs
Я использую php и имею строку с content =
<a href="www.something.com">Click here</a>
мне нужно избавиться от всего, кроме "www.something.com" Я предполагаю, что это можно сделать с помощью регулярных выражений. Любая помощь приветствуется! Спасибо
5 ответов
Это очень легко сделать с помощью SimpleXML:
$a = new SimpleXMLElement('<a href="www.something.com">Click here</a>');
echo $a['href']; // will echo www.something.com
дайте этому вихрь:
$link = '<a href="www.something.com">Click here</a>';
preg_match_all('/<a[^>]+href=([\'"])(?<href>.+?)[^>]*>/i', $link, $result);
if (!empty($result)) {
# Found a link.
echo $result['href'][0];
}
результат: www.something.com
Обновлено: теперь требуется стиль цитирования, чтобы соответствовать, обращаясь к комментарию ниже.
Я бы предложил следующий код для этого:
$str = '<a href="www.something.com">Click here</a>';
preg_match('/href=(["\'])([^]*)/i', $str, $m);
echo $m[2] . "\n";
выход
www.something.com
Это позаботится о обеих одинарных цитатах '
и двойные кавычки "
в ссылке href.
как, вероятно, вы не имели в виду ваш вопрос так легко, но это делает именно то, что вы просите:
$link = '<a href="www.something.com">Click here</a>';
$href = substr($link, 9, -16);
$href
- это:
string(17) "www.something.com"
как регулярное выражение Это можно выразить так:
$href = preg_match('(^<a href="([^"]*)">Click here</a>$)', $link, $matches) ? $matches[1] : die('Invalid input data.');
это полезно?
предполагая, что всегда формат переменной, ниже следует сделать трюк. Если содержимое не может быть ссылкой, это не сработает. По сути, он ищет данные, заключенные в двух цитатах.
<?php
$string = '<a href="www.something.com">Click here</a>';
$pattern = '/"[a-zA-Z0-9.\/\-\?\&]*"/';
preg_match($pattern, $string, $matches);
print_r($matches);
?>