Предположим, что $url
содержит полный URL-адрес (включая часть http://
), следующий код должен выполнить то, что вы просите:
preg_match('@^(?:http://)?([^/]+)@i', $url, $matches);
$sql = "SELECT n.nid
FROM {node} n
INNER JOIN {feedapi_node_item} i ON i.nid=n.nid
WHERE type='%s' AND (url = '%s' OR url = '%s')";
$dnid = db_result(db_query_range($sql,
variable_get('feedapi_dedupe_content_type', feedapi_dedupe_content_type()),
'http://www.' . $matches[1], 'http://' . $matches[1], 0, 1)
);
Если тогда URL-адрес, содержащийся в базе данных, содержит такие значения, как `http://example.com/directory,, тогда вы можете использовать следующий код:
preg_match('@^(?:http://)?([^/]+)@i', $url, $matches);
$sql = "SELECT n.nid
FROM {node} n
INNER JOIN {feedapi_node_item} i ON i.nid=n.nid
WHERE type='%s' AND (url LIKE '%s' OR url LIKE '%s')";
$dnid = db_result(db_query_range($sql,
variable_get('feedapi_dedupe_content_type', feedapi_dedupe_content_type()),
'http://www.' . $matches[1] . '/%', 'http://' . $matches[1] . '/%', 0, 1)
);
В Drupal, если вы хотите ограничить количество строк, полученных из запроса, вам нужно использовать db_query_range()
.