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
Clement mallet มีคำตอบที่ดีกว่า แต่ถ้ามีอะไรฉันหวังว่าฉันจะช่วยได้ - person Pariah; 04.09.2014
comment
โซลูชันของ Clement mallet ใช้ได้ผลสำหรับฉัน เป็นโซลูชันที่ยืดหยุ่น แต่ก็ขอบคุณสำหรับความช่วยเหลือของคุณเช่นกัน ปาย - person Diksha Bhatt; 04.09.2014