Simple Html Dom - как сделать регистро-независимый поиск

Статус
В этой теме нельзя размещать новые ответы.

jabbaxatt

Добрый модератор
Регистрация
21 Янв 2009
Сообщения
902
Реакции
433
Simple Html Dom - как можно заставить искать признаки без учёта регистра?

Т.е. в коде ниже я ищю все ссылки с анкором Вася. Но я так-же хочу чтобы он брал ссылки с анкором ВАСЯ, вася, ВаСя и т.д. А он берёт только Вася, с учётом регистра. Гугл не помог.

PHP:
$html = file_get_html($url);
 
$tempstr='a[plaintext*=Вася]';
$a = $html->find($tempstr);
 
Код:
$tempstr='a[plaintext*=Вася]';
$a = $html->find($tempstr,null,true);

+ заменить
Код:
$check = $this->match($exp, strtolower($val), strtolower($nodeKeyValue));
на
Код:
$check = $this->match($exp, mb_strtolower($val), mb_strtolower($nodeKeyValue));
 
Немного не понял что происходит в Вашем примере.

Сам пока тупо сделал mb_strtolower() для всего текста и искал уже заведомо приведённый в нижний регистр "вася". Так сказать грубо, костыль, но работает. Конечно правильное решение тоже всё ещё интересно.

Что такое $exp? Да и остальное не совсем понятно, можно комментарии по переменным и сути происходящего?
 
загляните в код Simple Html Dom
а именно в функцию find

Код:
function find($selector, $idx=null, $lowercase=false)

из сего понятно что в параметрах можно задать нечувствительность к регистру $lowercase

что я собственно Вам и посоветовал сделать
Код:
$a = $html->find($tempstr,null,true);

но это все прекрасно работает с англ текстом, и чтобы оно заработало с рус, Вам надо внести изменения в функции seek,
заменить строку
Код:
$check = $this->match($exp, strtolower($val), strtolower($nodeKeyValue));
на
Код:
$check = $this->match($exp, mb_strtolower($val), mb_strtolower($nodeKeyValue));
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху