Помогите разобраться в кодировках!!!

TI
На сайте с 24.09.2008
Offline
14
704

короче, тема такая: есть сайт на utf-8, который необходимо распарсить. Все ничего, кроме одного: в результате парса имеем переменную $prod_man=Casio GLX-5600-1E; (в исходном коде браузер выдает "Casio GLX-5600-1E").

А теперь, собственно, вопрос: как порезать эту переменную split'ом или каким либо другим способом именно по этому  ????????? И будет ли данный способ работать, если, к примеру, переменная будет равна $prod_man=Михаил Москвин 077-2-826; ("Михаил Москвин 077-2-826")???????

P.S. Кодировка файла, которым парсю - utf8 без BOM.

Продаю железнодорожные модели PIKO. (http://www.piko-shop.ru)
[Удален]
#1


$prod_man = "Михаил Москвин 077-2-826";
$code = array_pop(explode(" ", $prod_man));

если я правильно понял ваш вопрос

TI
На сайте с 24.09.2008
Offline
14
#2

$prod_man = "Михаил Москвин 077-2-826";
$code = array_pop(explode(" ", $prod_man));

explode не работает, т.к. кодировка - utf-8. проверял только что.

LEOnidUKG
На сайте с 25.11.2006
Offline
1774
#3
technik_it:
$prod_man = "Михаил Москвин 077-2-826";

$code = array_pop(explode(" ", $prod_man));


explode не работает, т.к. кодировка - utf-8. проверял только что.

ой да ну)

С каких пор вообще на   влияет кодировка?

кстати может просто:

$code = explode(" ", $prod_man);

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/ ✅ Настройка и оптимизация серверов https://getmanyspeed.ru/
[Удален]
#4

mb_convert_encoding или iconv (она с UTF8 файлами кодированными без BOM работает точно так же как и mb_convert_encoding)


$str = 'Михаил Москвин 077-2-826';
$str1251 = mb_convert_encoding($str, 'windows-1251', 'utf-8');

mbstring.so должен быть установлен и включен.

Что такое "прорезать" переменную для меня не понятно. Что получить надо?

LEOnidUKG:
ой да ну)
С каких пор вообще на   влияет кодировка?

Тут просто надо было включить дар телепатии, чтобы понять вопрос :)

TI
На сайте с 24.09.2008
Offline
14
#5


$vendors=array();
array_push($vendors, "Appella", "Kolber", "Candino", "Orient", "Casio", "Romanson", "Charmex", "Seiko", "Chronotech", "Timex", "Haas", "Ника", "Adriatica", "KAD LOO", "Aerowatch", "Kleynod", "Aigner", "Konstantin Chaykin", "Alfex", "L'Duchen", "Alpina", "Laros", "AmebaDesign", "Le Chic", "Anne Klein", "Le Temps", "Appetime", "Longines", "Aristo", "Lorenz", "Armand Basi", "Lotus", "Armand Nicolet", "Luminox", "Armani", "MANGO", "Atlantic", "Marc Ecko", "Audemars Piguet", "MARVIN", "Auguste Reymond", "Mathey-Tissot", "Axcent", "Maurice Lacroix", "Azzaro", "Medana", "Badec", "MEXX", "Balmain", "Michael Kors", "Barbie", "Mido", "Baume & Mercier", "Milus", "Benetton", "Miss Sixty", "Bentley", "Montblanc", "Betty Barclay", "Moog", "Blancpain", "Morellato", "Blu", "Morgan", "Blumarine", "Moschino", "Boccia", "Moscow Classic", "Boegli", "Movado", "Breguet", "NAUTICA", "Breil Milano", "Nina Ricci", "Breitling", "Nooka", "Bruno Sohnle", "Obaku", "Bulova", "Omega", "Buran", "OPTIME", "Burberry", "Oregon Scientific", "Burett", "ORIS", "Cacharel", "Paco Rabanne", "Calvin Klein", "Panerai", "Cardi", "Paris Hilton", "Carl F. Bucherer", "Passion", "Carlo Ferrara", "Patek Philippe", "Carrera y carrera", "Pequignet", "Cartier", "Perrelet", "Caterpillar", "Philip Laurence", "CeCi", "Philip Watch", "Cecil Purnell", "Pierre Cardin", "Cerruti 1881", "Pierre Lannier", "Certina", "PILO & Co", "Charles-Auguste Paillard", "Pirelli", "Chopard", "Platinor", "Christian Bernard", "Polar", "Christina London", "Police", "Cimier", "PowerDisk", "Citizen", "Priosa", "Claude Bernard", "PULSAR", "Clyda", "Q&Q", "Colleebri Italy", "Quinting", "Continental", "Rado", "Cover", "Raymond Weil", "Cross", "Revue Thommen", "Cyril ratel", "Roamer", "D.Factory", "Roberto Cavalli", "Dalvey", "RoccoBarocco", "Daniel Roth", "Rochas", "Danish Design", "Romanoff", "Davosa", "Rotary", "Denissov", "Royal London", "Diesel", "RSW", "DKNY", "Salvatore Ferragamo", "Dolce&Gabbana", "Sauvage", "EBEL", "Schwarz Etienne", "ECCO", "Seconda", "Edox", "Sector", "Elite", "Sigma", "ELYSEE", "Sisley", "Epos", "Skagen", "Ernest Borel", "SOYUZ", "Esprit", "Suunto", "Essence", "Swatch", "Eterna", "Sweet Years", "EverSwiss", "Swiss Military", "F.Gattien", "Tag Heuer", "FENDI", "TechnoMarine", "Festina", "Tempus", "Fiesta", "Timberland", "Fortis", "Tissot", "Fossil", "Titoni", "Frederique Constant", "Tokyoflash", "Freelook", "Tommy Hilfiger", "Garmin", "Toy Watch", "Gc", "TW Steel", "Gerald Genta", "UHR-KRAFT", "GF Ferre", "Ulysse Nardin", "Gio Monaco", "Vacheron Constantin", "Givenchy", "Valentino", "Godier", "Valori D'Arte", "Grovana", "Van Der Bauwede", "Gucci", "Versace", "GUESS", "Versus", "Gustav Becker", "Victorinox", "Guy Laroche", "Voyage", "Haurex", "Watch Flash", "Hautlence", "Wenger", "Hermes", "Winx", "Highgear", "Younger & Bresson", "Hot diamonds", "Yves Bertelin", "Hublot", "Zannetti", "Hugo Boss", "Zaritron", "Hysek", "ZENITH", "IceLink", "Восток", "Inesse M. PARIS", "Заря", "Ingersoll", "Комета", "Invicta", "МакТайм", "J. Springs", "Михаил Москвин", "Jacques du Manoir", "Нестеров", "Jacques Lemans", "Полет", "Jaeger-LeCoultre", "РФС", "Jaguar", "Рекорд", "Jean Marcel", "Слава", "Jemis", "Слава-Дизайн", "Jennifer Lopez", "Спецназ", "Jowissa", "Спутник", "Just Cavalli", "Тик-Так", "Зенит");
$buf = implode("",file("http://market.yandex.ru/guru.xml?CMD=-RR=0,0,0,0-PF=1801946%2BEQ%2Bsel%2B23244607-VIS=160-CAT_ID=2431654-EXC=1-PG=10&hid=91259"));
list($out[1],$out[2])=split("<br clear=\"all\">", $buf);
list($out[3],$out[4])=split("<div class=\"b-offers b-offers_type_guru\">", $out[2]);
$key = trim($out[3]," \r\n\t");
list($new, $out[0], $out[1], $out[2], $out[3], $out[4], $out[5], $out[6], $out[7], $out[8], $out[9]) = split("<div class=\"b-offers b-offers_type_guru\"", $key, 11);
foreach($out as $key => $val){echo("\$key=$key; \$val=".htmlspecialchars($val).";<br>");
preg_match("!id=\"(.*?)\"!ism",$val,$match);
$product_sku=$match[1];
preg_match("!src=\"(.*?)\"!ism",$val,$match);
$product_short_image=$match[1];
preg_match("!href=\"(.*?)\"!ism",$val,$match);
$product_details_href=$match[1];
preg_match("!\"\>([^\<]+)\<\/a\>!ism",$val,$match);
echo("<pre>");print_r($match);echo("</pre>");
$prod_name=$match[1];
$manufact=explode('&nbsp;', $prod_name);
echo("<pre color=\"red\">");print_r($manufact);echo("</pre><hr>");
$prod_man=substr($manufact[1], 0, -1);
$manufacturer=array_search($prod_man, $vendors);
echo("\$product_sku=".$product_sku."; =-= \$product_details_href=http://market.yandex.ru".$product_details_href."; =-= \$manufacturer=".$vendors[$manufacturer].";<br><hr>");

У меня не получается как раз в строке $manufact=explode('&nbsp;', $prod_name);

So1:
Тут просто надо было включить дар телепатии, чтобы понять вопрос :)

Простите, что не выкатил код сразу. Надеюсь, так понятнее стало.

Итак, нужно порезать то,что находится в переменной $prod_name по пробелу, который в исходном коде отображается как &nbsp; (там иногда встречаются еще и простые пробелы.)

[Удален]
#6

$product_sku=4725690; =-= $product_details_href=http://market.yandex.ru/model.xml?hid=91259&modelid=4725690; =-= $manufacturer=Appella;

вот что у меня получилось. Не получается что? :) То что после

$manufacturer=array_search($prod_man, $vendors);

$manufacturer = false

и по вендорам невозможно найти ничего? Ну так скрестите вендоров с $prod_man при помощи функции. Например так


function myVendorSearch($prod_man, $vendors) {
$prod_man = str_replace('&nbsp;',' ', $prod_man);
foreach ($vendors as $k => $v) {
$v = str_replace('&nbsp;',' ', $v);
if (strncasecmp($v,$prod_man,strlen($v))==0) return $k;
}
return false;
}

Дело, насколько я понимаю, далеко не в кодировках.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий