2014-01-22 5 views
0

Я пытаюсь разобрать некоторые веб-страницы, чтобы обнаружить присутствие состояний США на странице. Проблема, с которой я сталкиваюсь, заключается в том, что состояние, которое у меня есть, отменено, а совпадение строк на странице возвращает ложные срабатывания. Например, если поиск выполняется для AZ и слово amaze находится на странице, результат будет положительным для присутствия состояния Аризоны. Мой фрагмент кода ниже:Поиск адреса состояния

//$state = "AZ"; 
    if (stristr (strip_tags ($response), $state) != FALSE) { 
     $stateMatch = true;; 
    } 

Как я могу лучше всего проводить этот разбор? В идеале я хотел бы также искать полное состояние «Аризоны», учитывая, что переменная $ state хранит соответствующую аббревиатуру (AZ)?

+0

Весьма вероятно, что вы всегда будете получать ложные срабатывания из-за такие штаты, как Мэн, который сокращенно «ME» - вполне обычное слово на английском языке (также OK для Оклахомов, OR для Орегон). – naivists

+0

есть ли какое-нибудь умное регулярное выражение или какая-либо другая форма соответствия строк, которая может уменьшить ложные срабатывания? Я имею в виду, что theres должно быть чем-то лучше, чем прямое совпадение строк для AZ –

+0

Если вы пытаетесь сопоставить его на всей странице, а не в определенном элементе, вам, скорее всего, не повезло, и у вас будет больше шансов, передав его на аутсорсинг поздно люди делают это вручную. Или дождитесь [сингулярности] (https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&ved=0CCgQFjAA&url=http%3A%2F%2Fen.wikipedia.org% 2Fwiki% 2FTechnological_singularity & е = 8SngUpS1KqyT0QWB8IGYCQ & USG = AFQjCNGzsRQukKAzZL1J-Ci3vB9hoEK0eg & Sig2 = SXsOypLLaYMRr1f8_28FFQ & BVM = bv.59568121, d.d2k). По крайней мере, улучшить его бит, основанный на границах слов. Который, очевидно, все равно будет дерьмовым. – PeeHaa

ответ

0

Я столкнулся с этим сценарием один раз. То, что я сделал, например, если бы я хотел найти AZ, я подумал, что может произойти до AZ. Если это действительно код состояния, а не какое-либо другое слово, подобное удивлению, перед AZ должно быть пробел, запятая или точка с запятой или скобка и т. Д. Короче говоря, AZ не может иметь никакого алфавита, прежде чем иначе это будет любое другое слово, а не код для Аризоны, чтобы вы могли проверить, что символ перед AZ не должен быть алфавитом.

я сузили свой поиск на поиск следовать, а не только AZ, потому что в моем случае я только мог следующие комбинации
  AZ
, AZ
(AZ
, AZ

0

Я думаю, что вы повезло, если не ваш мандат, что государство аббревиатуру следует период

// $state ='AZ.' 

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

// $state = ' AZ ' 
// $state = ' AZ.' 
Смежные вопросы