PHP match * .domain.com - PullRequest
       6

PHP match * .domain.com

0 голосов
/ 16 октября 2011

Это некоторый код из php-файла, с которым я работаю. Мне нужно сопоставить «domain.com», но когда я вхожу, это не работает, потому что он анализирует документ, ища теги href, и я думаю, что для соответствия ему требуется http://www.. Я попробовал приведенное ниже соответствие preg, но оно не сработало, и мое кодирование не слишком хорошее, любая помощь будет оценена.

preg_match ("/domain.com/i");

        $match = 'http://www.domain.com'; 

        for($i=0;$i<$documentLinks->length;$i++) 
        {
            $documentLink = $documentLinks->item($i);
            if ($documentLink->hasAttribute('href') AND substr(strtolower($documentLink->getAttribute('href')), 0, strlen($match)) == $match) 
            {

1 Ответ

3 голосов
/ 16 октября 2011

попробуйте это:

for($i=0;$i<$documentLinks->length;$i++) 
{
    $documentLink = $documentLinks->item($i);
    if ($documentLink->hasAttribute('href')) 
    {
        if (preg_match('!^https?://([^/]+\.)?domain\.com(/|#|$|\?)!i', trim($documentLink->getAttribute('href'))))
        {

регулярное выражение является важной частью:

^https?://([^/]+\.)?domain\.com(/|#|$|\?)

начинаются с начала строки, соответствуют http или https, затем необязательный поддомен, который может не включать прямую косую черту (так что вы знаете, что вы все еще находитесь в доменной части), за которым следует домен, который вы хотите сопоставить, затем либо начало пути, начало фрагмента или конец URL

...