В php песочнице ваш код работает.
Однако вы забыли <
в начале тега a
.
<?php
$string = '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
</head>
<body onclick="on_body_click()" text="#000000" alink="#FF0000" link="#0000FF" vlink="#800080">
<a href="/cgi-bin/new_get_recorded.cgi?l_doc_ref_no=7506389&COUNTY=san francisco&YEARSEGMENT=current&SEARCH_TYPE=DETAIL_N" title="Document Details">Show Name Detail</a>
</body>
</html>';
$doc = new DOMDocument();
$doc->loadHTML($string);
$selector = new DOMXPath($doc);
$result = $selector->query('//a[@title="Document Details"]');
$url = $result[0]->getAttribute('href');
echo $url;
В $url
у вас есть href
значение (распечатано).
Похоже, у вас проблема со строкой и использованием '
и "
.
Если вы запустите $string
с '
, вы не сможете использовать его внутри. Вы можете использовать '
только в конце, чтобы закрыть php переменную ';
;
У вас есть три решения:
- заменить
'
на "
внутри строка, представляющая ваш html; - Используйте
\'
вместо только '
внутри строки, представляющей ваш html. Это сообщает php, что строка еще не закончена, но что '
представляет содержимое строки; - heredo c синтаксис;
Например, с первым подходом имеем:
$string = ' Inside the string you should use just this type of apostrophe " ';