Bağlantı için dize edin

2 Cevap php

Ben oldukça uzun girişleri bir veritabanına sunulmadan var.

Bunu nasıl girdi bunun içinde bir bağlantı varsa bir işlev görmek için oluşturabilirim? Bana birisi Başlamak miyim?

Hemen hemen, ben işlev herhangi bir <a, <a href ya da bir dize içinde herhangi bir diğer ilgili bağlantı örneklerini bulmak istiyorsanız.

Ben bir diziye girişi atmak için değil tercih ediyorum. Bunu gerçekleştirmek için başka yolları var mı?

2 Cevap

HTML etiketini bulmak için Regex Çıkış

Eğer uzak RegEx'in kalmak istiyorsanız, vb, "<a ", ayıklayın bulmak için strpos ve substr çirkin bir kombinasyonunu kullanabilirsiniz

Böyle çirkin bir şey (bu sadece ilk bağlantı bulur, kötü koduyla başarısız olur ve) geçersiz XHTML olan ('bulmak değil) ps Bu kötü bir fikirdir:

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;
}

Ben de dize tokenizing deneyebilirsiniz eminim?

$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;

Not: Bu bunu yapmak için büyük bir yol DEĞİLDİR.