Как я могу переиндексировать строку? - PullRequest
1 голос
/ 29 июля 2011

Это в основном сводится к этому. У меня есть строка с именем $ name. $ name обычно имеет значение '' blablabla '', значение происходит из внешнего ресурса, поэтому оно заключено в две одинарные кавычки Если бы я сам объявил эту переменную, она бы выглядела так: $name = "''blablabla''";

Я удаляю эти одинарные кавычки:

$name[0] = '';
$name[1] = '';
$name[mb_strlen($name, 'UTF-8')-1] = '';
$name[mb_strlen($name, 'UTF-8')-2] = ''; 

(сброс строки с индексом не работает) Так что теперь у меня есть $ name со значением «blablabla» без кавычек. Вот моя проблема. Когда я смотрю на исходный код, перед «блаблабла» появляются странные символы. Как я могу справиться с этим? И есть ли способ переиндексировать мою строку (например, что array_values ​​делает для массивов)?

EDIT В конце концов я использовал этот код:

$name = mb_substr($name, 2, -2, 'UTF-8');

Ответы [ 2 ]

0 голосов
/ 30 июля 2011

Вы можете использовать функцию обрезки:

$name = trim($name, "'");
echo $name; // Prints: blablabla
0 голосов
/ 29 июля 2011
$name = "''foo''";

$name = substr($name, 2, -2);

echo $name; # foo
  1. Вы имеете дело с кодировками, в то время как рассматриваемые символы (') являются однобайтовыми.Строки в PHP по-прежнему только двоичные, что означает, что вы можете просто обрезать их по краям.
  2. Когда вы отменяете использование индекса, имейте в виду, что это двоичная позиция.mb_strlen не подходит для сбора позиции двоичного индекса, strlen делает:

.

$name = "''foo''";

$name[0] = '';
$name[1] = '';

$len = strlen($name); # binary safe string length

$name[$len-1] = '';
$name[$len-2] = '';

echo $name; # foo

mb_strlen по сравнению с strlen

$utf8 = 'ä';
mb_strlen($utf8, 'UTF-8'); # 1
strlen($utf8);             # 2

$utf8[1] != 'ä';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...