Очистка текста с веб-страницы с помощью php & regex - PullRequest
1 голос
/ 11 февраля 2011

Я строю функцию чтения текста заголовка, найденную на веб-странице между тегами <title></title>.Я использую следующий код регулярного выражения для получения текста заголовка с html-страницы:

 if(preg_match('#<title>([^<]+)</title>#simU', $this->html, $m1))
      $this->title = trim($m1[1]);

Я использую следующее для кодирования значения оператора вставки mysql:

mysql_real_escape_string(rawurldecode($this->title))

Таким образом, у меня остается база данных, полная заголовков, содержащих html-сущности (& nsbp и т. Д.) И иностранные символы, такие как Dating S.o.s | Gluten-free, Dairy-free, Sugar-free Recipes And Lifestyle Tips

. Цель состоит в том, чтобы декодировать, удалять, очищать заголовки,Посмотрите как можно ближе к идеальному английскому.

Я построил функцию, которая использует следующие 2 регулярных выражения для удаления html-сущностей и ограничения нежелательной почты соответственно.И хотя он не идеален (потому что он удаляет html-сущности, а не сохраняет их), он наиболее близок к чистоте, чем у меня.

$string = preg_replace("/&#?[a-z0-9]+;/i","",$string);
//remove all non-normal chars
$string = preg_replace('/[^a-zA-Z0-9-\s\'\!\,\|\(\)\.\*\&\#\/\:]/', '', $string);

Но неанглийские символы по-прежнему существуют.

Может ли кто-нибудь предложить помощь в отношении:

  1. Лучший способ сохранить эти строки заголовка в БД, пытаясь сохранить английское намерение (пунктуация, апострофия и т. Д.)
  2. Как преобразовать или устранить странные символы, как показано в заголовке моего примера выше?

Большое спасибо за вашу помощь!

Ответы [ 2 ]

1 голос
/ 11 февраля 2011

Для пункта 1 в PHP есть функция html_entity_decode () , которую можно использовать для превращения сущностей HTML в "обычные" символы.

0 голосов
/ 11 февраля 2011
...