Во-первых в этой строке есть кириллица, а значит нужно использовать
функции для работы с многобайтовыми строками.
Во-вторых переменные
$posnamevalstart и
$posnamevalend у вас имеют одинаковые значения. Раз вы ищете в обеих переменных одинаковые значения, то нужно смещать начальную точку:
$posnamevalend = mb_strpos($findstr, "\"", $posnamevalstart + 1);
В-третьих третьим параметром в функции
substr() передается ДЛИНА ВОЗВРАЩАЕМОЙ СТРОКИ. Значит нужно написать эту строку следующим образом:
$namevalue = mb_substr($findstr, ($posnamevalstart + 1), ($posnamevalend - $posnamevalstart - 1));
Ну и самое главное - зачем вы вообще это делаете? Если просто понять как работать с
strpos() и
substr() то окей. А так у вас там обычная сериализованная строка (только почему-то обрезанная вами), которая представляется в массив функцией
unserialize()