PHP разбить строку на две части

Примечание. Я не могу использовать функции разрыва или следующей строки, так как я использую FPDF.

У меня проблема со строками php. У меня есть строка, в которой я хочу показать не более 12 символов в первой строке и оставшиеся во второй строке. Итак, в основном я хочу разбить строку на две части и назначить две переменные, чтобы я мог распечатать эти две переменные. Я пробовал следующий код: -

if($length > 12)
       {
         $first400 = substr($info['business_name'], 0, 12);
         $theRest = substr($info['business_name'], 11);
         $this->Cell(140,22,strtoupper($first400));
         $this->Ln();
         $this->Cell(140,22,strtoupper($theRest));
         $this->Ln();
       }

Но используя это, я получаю, как показано ниже:

Original String : The Best Hotel Ever
Output : 
The Best Hot
Tel Ever

Это разбивает слово, я не хочу разбивать слово, просто проверьте длину, и если в пределах 12 символов все слова завершены, напечатайте следующее слово в следующей строке. Как это :

Desired OutPut:
The Best 
Hotel Ever

Какие-либо предложения ?


person Diksha Bhatt    schedule 04.09.2014    source источник


Ответы (2)


Я не вижу встроенной функции для этого, однако вы можете взорвать пробелы и перестроить свою строку до тех пор, пока длина следующих слов не превысит 12, а все остальное перейдет ко второй части:

$string = 'The Best Hotel Ever';

$exp = explode(' ', $string);

if (strlen($exp[0]) < 12) {
  $tmp = $exp[0];
  $i = 1;
  while (strlen($tmp . ' ' . $exp[$i]) < 12) {
    $tmp .= " " . $exp[$i];
    $i++;
  }
  $array[0] = $tmp;
  while (isset($exp[$i])) {
    $array[1] .= ' ' . $exp[$i];
    $i++;
  }
  $array[1] = trim($array[1]);
} else {
  $array[0] = '';
  $array[1] = trim(implode (' ', $exp));
}

var_dump($array);

// Output : array(2) { [0]=> string(8) "The Best" [1]=> string(10) "Hotel Ever" }

// $string1 = 'The';
// array(2) { [0]=> string(3) "The" [1]=> string(0) "" } 

// $string2 = 'Thebesthotelever';
// array(2) { [0]=> string(0) "" [1]=> string(16) "Thebesthotelever" }  
person ClmentM    schedule 04.09.2014

Я не слишком разочаровываюсь в PHP, но, похоже, это простой случай, когда элемент строки, к которому вы обращаетесь, находится дальше от того места, где вы хотите быть:

Пытаться:

if($length > 12)
       {
         $first400 = substr($info['business_name'], 0, 8); 
         $theRest = substr($info['business_name'], 11);
         $this->Cell(140,22,strtoupper($first400));
         $this->Ln();
         $this->Cell(140,22,strtoupper($theRest));
         $this->Ln();
    }

Для получения дополнительной помощи проверьте, потому что вам нужно помнить, чтобы считать с нуля: http://php.net/manual/en/function.substr.php

person Pariah    schedule 04.09.2014
comment
Что ж, у молотка Клемента есть лучший ответ, но я надеюсь, что помог - person Pariah; 04.09.2014
comment
Решение Клемента Маллета сработало для меня, это гибкое решение. Но спасибо и за вашу помощь. Пайя - person Diksha Bhatt; 04.09.2014