$string = 'Some string'; $pos = 5; ...??... $begging // == 'Some s'; $end // == 'tring';
Каков наилучший способ отделить строку по две от заданной позиции?
Вы можете использовать substr
для получения двух подстрок:
$str1 = substr($str, 0, $pos); $str2 = substr($str, $pos);
Если вы опустите третью длину параметра, substr
берет остальную часть строки.
Но чтобы получить ваш результат, вам действительно нужно добавить его в $pos
:
$string = 'Some string'; $pos = 5; $begin = substr($str, 0, $pos+1); $end = substr($str, $pos+1);
Regex решение (если вы в него):
... $string = 'Some string xxx xxx'; $pos = 5; list($beg, $end) = preg_split('/(?<=.{'.$pos.'})/', $string, 2); echo "$beg - $end";
С уважением
БВ
Как насчет substr ()?
$string = 'Some string'; $pos = 5; $beginning = substr($string, 0, $pos); $end = substr($string, $pos);
Каков наилучший способ отделить строку по две от заданной позиции?
Если я правильно вас понимаю, вы можете сделать:
$str = 'hello world'; $pos = 5; $separated_str = substr($str, $pos); echo $separated_str;
Результат:
world
Это зависит от структуры вашей строки, так как есть другие способы разделить строку.
Я искал быстрый способ разбить строку на заданную позицию.
Почему заданная позиция? Обычно вам нужно расколоться на персонажа (я думаю, что вы искали по позиции, потому что функция разрыва разделила строку на слишком много частей):
Мое решение было наконец:
$string = "hello world my dear"; list ($first, $remaining ) = split (' ', $string, 2); //limit to 2 pieces echo $first; //"hello"; echo $remaining; //"world my dear";
Обратите внимание, что я отказался от использования «позиции» (я использовал «substr», чтобы получить его).
Учитывая, что ваша потребность в «позиции» действительно не нужна, мое решение является самым быстрым среди всех вышеперечисленных и не имеет многобайтовых проблем. Также я думаю, что читать гораздо проще.
К несчастью, эта функция устарела в последнем PHP, вы можете использовать ее, если у вас есть старый PHP или вы можете использовать preg_split. Я был не очень доволен этим, потому что единственный способ добиться такой же функциональности – злоупотреблять регулярным выражением. Если вы не можете использовать split
самая быстрая альтернатива:
$string = "hello world my dear"; list ($first, $remaining ) = preg_split('/\s+/', $string, 2);
который намного быстрее, чем @rubber, и не использует позицию вообще.
Ссылка: Разделенная документация
По моему мнению, Wordwrap работает лучше.
$text = "The quick brown fox jumped over the lazy dog."; $newtext = wordwrap($text, 20, "<br />\n"); echo $newtext;
Вышеприведенный пример выводит:
The quick brown fox<br /> jumped over the lazy<br /> dog.
Другой пример:
$text = "A very long woooooooooooord."; $newtext = wordwrap($text, 8, "\n", true); echo "$newtext\n";
Вышеприведенный пример выводит:
A very long wooooooo ooooord.