Возможный дубликат:
Манипуляция строк PHP: извлечение hrefs
Я использую php и имею строку с содержимым =
<a href="www.something.com">Click here</a>
Мне нужно избавиться от всего, кроме «www.something.com». Я предполагаю, что это можно сделать с помощью регулярных выражений. Любая помощь приветствуется! спасибо
Это очень легко сделать с помощью 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>.+?)\1[^>]*>/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=(["\'])([^\1]*)\1/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); ?>