Регулярные выражения

TRL

Новичок
Регулярные выражения

Как задать выражение, если нужно выбрать слова, которые ну например на немецком языке? Т.е. там есть буковки интересные, которые с двумя точками вверху - типа нашей Ё. \w не помогает :(
 

phprus

Moderator
Команда форума
TRL
А ты уверен, что в cp1251 есть эти символы? с 2-я точками на верху? Кстати PCRE умеет работать с UTF-8 смотри модификатор u.

Можно конечно конвертировать кодировку в ту, в которой есть эти символы с точками, однако в любом случае скорее всего все эти символы придется перечислять в регулярном выражении.
 

TRL

Новичок
phprus! Ок посмотрю.

А перечислять каким образом? Ибо таких символом оч. много. Смотрю сейчас названия городов - Как в Германии к примеру, так и в Албании. Языки то у этих стран разные :) Вот сиди и думай на каком написано. Вариант все данные хранить в UTF8 не подходит, т.к. на сайте везде всё хранится в ВИН1251 :(

Или есть альтернативне варианты совмещения данных в UTF8 с WINDOWS1251?

P.S. собираем базу данных всех стран, регионов, городов мира :)
 

phprus

Moderator
Команда форума
Вариант все данные хранить в UTF8 не подходит
Перевести сайт на кодировку UTF-8 - это, на мой взгляд самый лучший вариант. Однако если это не подходит, то символы которых нет в windows1251 придется выводить на страницу в виде &#код_символа; В таком случае конвертировать из utf в win1251 написано в разделе "Вопрос-Ответ" этого сайта.

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

-~{}~ 19.11.06 20:47:

P.S. собираем базу данных всех стран, регионов, городов мира
А эта база потом распространяться будет? а то мне было бы интересно иметь у себя такую базу.
 

TRL

Новичок
Вообще наверно да но не массово, а только по предложениям :) База думаю бльшая будет, т.к. сейчас только США, Украина, Россия (не полностью), Австралия готова - уже 42000 города. Всего 215 стран.

Проверил весь процесс работы. Вот что выходит:

PHP:
<select\s+name\=\"city_id\"\sonchange\=\"mSubmit\(\)\;\">(.*)<\/select>
Данная регуляка нормально работает, в результатах есть селект, который содержит список городов. Идём далее:

PHP:
<option\s+value\=\"[0-9]+\"\s+>([^`<]*)<\/option>
Даная регуляра работает через раз. Почему не понятно. Реультат конвертации страницы в WIN1251 - нормлаьный, нужный селект выбран. Русские без проблем все выбирает. Английский через раз. С Америкос всё выбрали без проблем, вот Китай под вопросом стоит. Якобы ничего там нет такого в названиях городов: Aikou, Aimin т.е впринцепе англ. яз. Под выражение должно совпадать, но на выходе пустой массив :(

-~{}~ 20.11.06 09:12:

не... всёравно на буквах типа: с двумя точка запарка. Может как вариант конвертировать изначально данные буквы в обычные англ, только без точек?

-~{}~ 20.11.06 09:40:

В общем пришёл к выводу, что лучше всего в моём случае делать так:

Забирать данные обычным способом, если данные содержут спец. символы, котрые в ВИН1251 не существуют, просто не конкертирую данные в эту кодировку, оставляю в UTF8. А дальше (при использовании) уже разберёмся, что делать с ними.
 
Сверху