За последние 24 часа нас посетили 21905 программистов и 1010 роботов. Сейчас ищут 669 программистов ...

как же найти эту подстроку в unicode

Тема в разделе "Прочие вопросы по PHP", создана пользователем rewuxiin, 15 янв 2022.

  1. rewuxiin

    rewuxiin Активный пользователь

    С нами с:
    17 апр 2012
    Сообщения:
    611
    Симпатии:
    87
    всем привет
    заранее говорю, это не парсер, просто растиражировать копию сайта на несколько городов нужно.

    в базе данных хранится строка в json, соответственно кириллица там выглядит так \u433\u442

    есть список слов, которые нужно найти и заменить в процессе.

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

    если вручную перегнать слово в unicode и искать вот так

    PHP:
    1. $i = strpos($res, " \\u0442\\u0433");
    2. $k = strpos($res, ' \\u0442\\u0433');
    3. $l = strpos($res, ' \u0442\u0433');
    но это же гемор, нам нужно все по человечески сделать.
    PHP:
    1. $find = ' тг';
    2. /*Удаляем кавычки, созданные Json*/
    3. $jsonReplace = str_replace('"', '', json_encode($find));
    4. /*Добавляем экранирование*/
    5. $jsonReplace =  addslashes($jsonReplace);
    6.  
    7. $m = strpos($res, $jsonReplace);
    и что с экранированием, что без - возвращает false

    что подскажут светлые местные головы?
     
  2. Drunkenmunky

    Drunkenmunky Активный пользователь

    С нами с:
    12 авг 2020
    Сообщения:
    1.476
    Симпатии:
    281
    Зачем же вручную.
    Есть ord(), mb_ord()
     
  3. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.822
    Симпатии:
    736
    Адрес:
    Татарстан
    Используйте функции с пепфиксом mb_
     
  4. rewuxiin

    rewuxiin Активный пользователь

    С нами с:
    17 апр 2012
    Сообщения:
    611
    Симпатии:
    87
    спасибо, но мне кажется мы ушли не в ту сторону.
    вместо того что бы декодировать посимвольно, есть же методы попроще
    я вот нашел более лаконичное решение вытащить строку Json

    PHP:
    1. $find = "тг";
    2. $jsonFind = substr(json_encode($find), 1, -1);
    и все заработало
     
  5. Drunkenmunky

    Drunkenmunky Активный пользователь

    С нами с:
    12 авг 2020
    Сообщения:
    1.476
    Симпатии:
    281
    Мы ушли?
    Молоца
     
  6. rewuxiin

    rewuxiin Активный пользователь

    С нами с:
    17 апр 2012
    Сообщения:
    611
    Симпатии:
    87
    ладно, ладно, уговорил - вы ушли :D
     
  7. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.822
    Симпатии:
    736
    Адрес:
    Татарстан
    Как вопрос звучал? Где то был вопрос о том как json разобрать? Откуда нам знать что у вас в строке где вы ищете...
     
  8. amberson

    amberson Активный пользователь

    С нами с:
    23 июл 2020
    Сообщения:
    62
    Симпатии:
    14
  9. rewuxiin

    rewuxiin Активный пользователь

    С нами с:
    17 апр 2012
    Сообщения:
    611
    Симпатии:
    87
    это только для единичных задач. на деле лучше получить в php и работать со строкой кучей доступных инструментов.

    все, все. ладно. вопрос был не до конца корректно задан.

    по сути пост был создан больше для психологического снятия нагрузки. когда мозг кипит - размещаешь пост, расслабляешься и через часок находишь решение :)