Проверьте строку для ссылки - PullRequest
1 голос
/ 16 марта 2010

У меня довольно длинные записи в базе данных.

Как я могу создать функцию, чтобы увидеть, есть ли у этой записи ссылка внутри нее? Кто-нибудь может заставить меня начать?

В значительной степени я хочу, чтобы функция находила любые <a, <a href или любые другие связанные экземпляры ссылок в строке.

Я бы предпочел не бросать запись в массив. Есть ли другие способы сделать это?

Ответы [ 2 ]

0 голосов
/ 17 марта 2010

Если вы хотите держаться подальше от RegEx, вы можете использовать некрасивую комбинацию strpos и substr, чтобы найти "<a " извлечь это и т. Д.

Что-то уродливое, подобное этому (это находит только первую ссылку, оно потерпит неудачу с плохим кодом и не найдет '(что является недопустимым XHTML)) p.s. это плохая идея:

function findLink($string) {
  $pos = strpos($string, "<a ");
  if ($pos === false)
    return false;

  $string = substr($string, $pos);
  $pos = strpos($string, "href");
  $string = substr($string, $pos);

  // First quote
  $pos = strpos($string, '"');
  $string = substr($string, $pos + 1);

  // Last quote
  $pos = strpos($string, '"');
  $string = substr($string, 0, $pos);

  if (trim($string) != "")
    return $string;
  return false;
}

Я уверен, что вы также можете попробовать токенизировать строку?

$token = strtok($string, "\"'");
while ($token !== false) {
  // Look for anything with a link in it
  str_replace(array("http://", "www", "ftp://"), "", ltrim($string), $count);
  if ($count > 0)
    return $string;
  $token = strtok($string, "\"'");
}
return false;

Примечание: это НЕ отличный способ сделать это.

0 голосов
/ 16 марта 2010

Проверьте Regex , чтобы найти тег HTML

...