Функция для преобразования текстового URL в HTML URL - PullRequest
0 голосов
/ 03 февраля 2012

Мой код:

$rawhtml = file_get_contents( "site url" );

$pat= '/((http|ftp|https):\/\/[\w#$&+,\/:;=?@.-]+)[^\w#$&+,\/:;=?@.-]/i';

preg_match_all($pat,$rawhtml,$matches1);

foreach($matches1[1] as $plinks)
{
    $links_array[]=$plinks;
}

После тестирования нескольких ситуаций я заметил, что функция имела некоторые «утечки».Ссылка нарушается, если есть пробелы.

Например, у меня есть текстовый URL в переменной:

$rawhtml = " http://www.filesonic.com/file/2185085531/TEST Voice 640-461 Test Cert Guide.epub
"

Результатом должна быть одна ссылка на строку:

http://www.filesonic.com/file/2185085481/TEST Voice (640)+461 Test Cert Guide.pdf

, но результат

http://www.filesonic.com/file/2185085531/TEST

Иногда извлеченные ссылки также содержат , или ' или " в конце.Как от них избавиться?

1 Ответ

0 голосов
/ 03 февраля 2012

как избавиться от запятых, кавычек или двойных кавычек из извлеченных ссылок

Можно использовать (?<![,'"]) для исключения чего-либо в конце.Но ваша проблема в том, что вы просто не должны использовать класс завершающих символов:

 [^\w#$&+,\/:;=?@.-]

Это то, что соответствует " и '.

В качестве хакерского обходного пути к другой проблеме.первый класс символов может быть дополнен пробелом.

 [\w#$&+,\/:;=?@. -]+
                 ▵

Как уже говорилось, это, вероятно, не очень хорошее решение и может привести к другим несоответствиям.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...