2015-12-03 2 views
2

Я хочу сгенерировать строку конкретных символов. Мне нужно создать точную строку из 35 символов, чтобы использовать эту функцию.определенное количество символов строка в php

var_dump(str_pad("some text some text", 35, " ", STR_PAD_RIGHT)); 

Таким образом, это дает мне этот выход:

string(35) "some text some text " 

Это точно хорошо. Он добавит пробелы для оставшихся символов.

Но, для этого типа сценария, я хочу отказаться от символов выше 35.

var_dump(str_pad("some text some text some text some text some text some text some text some text", 35, " ", STR_PAD_RIGHT)); 

Выходной ток:

string(79) "some text some text some text some text some text some text some text some text" 

мне это нужно 35 символов здесь, а отбрасывая последние несколько символов из строки.

+3

'str_pad (SUBSTR ($ ул, 0, 35), 35, '', STR_PAD_RIGHT) ' – deceze

+1

@deceze: Спасибо. Теперь я чувствую, что задал глупый вопрос. –

ответ

-2
if (mb_strlen($string,"UTF-8") > 34){ 
    //there are 35 or more characters to the string 
    $string = mb_substr($string,0,35,"UTF-8"); 
} 
else { 
    //there are 34 or less characters so carry on 
    $string = str_pad($string, 35, " ", STR_PAD_RIGHT)); 
} 

Используя mb_substr, чтобы удалить длину строки, превышающую 35 символов ограничить. Это вариация MultiByte, которую я считаю рекомендуемой для подсчета.

+1

1) '$ string [35]' поднимет уведомление, если оно не существует. 2) Его значение будет «null», а не «false». 3) Использование байтовых смещений ('[35]'), с одной стороны, и 'mb_substr' на другом, в некоторых случаях связано с отказом. 4) Это может быть намного проще. – deceze

+0

cheers @deceze Я рассмотрел использование 'is_null', а затем пошел на« ложный »подход. И да, я не рассматривал смещение байта массива. Обновлено. – Martin

+0

Хорошо, лучше. Но все же, вы должны либо обрабатывать последовательности многобайтовых совместимых полностью, либо совсем не. Здесь вы смешиваете эти два подхода в двух разных кодах. – deceze

1

Попробуйте использовать substr на начальной строки, чтобы сократить его до 35 символов и затем обивка:

$data = "some text some text some text some text some text some text some text some text"; 
$data35 = str_pad(substr($data, 0, 35), 35, ' ', STR_PAD_RIGHT); 

var_dump($data35); 
/* 
    will output: 
    string(35) "some text some text some text some " 
*/