如果文本太长,如何在字符达到 20 个字符之前获取单词
How to get the word before the character reach 20 character if the text is too long
<?php
$conn1 = new MySqli('localhost','root','','test');
$data = "Hubert Blaine Wolfeschlegel Steinhausenbergerdorff Sr.";
$namelength = strlen($data);
$a = 20;
echo"<br>".$data;
#first name
$a = 20;
if($namelength <= $a)
{
echo"<br>".$firstname = substr($data ,0,$a);
}
else if ($namelength >= $a)
{
$a = 20;
while(substr($data ,$a, 1) != " ")
{
$a-=1;
}
echo"<br>".$firstname = substr($data ,0, $a);
}
#second name
$b = ($a + 20);
if( $namelength <= $b)
{
echo"<br>".$secname = substr($data ,($a),$namelength);
}
else if($namelength >= $b)
{
$b = 40;
while(substr($data ,$b, 1) != " ")
{
$b-=1;
}
$secname = substr($data ,21, $b);
$secname=trim($secname);
echo"<br>".$secname;
}
#third name
$c = ($b + 20);
if ( $namelength <=$c) {
echo"<br>".$thirdname = substr($data ,($c+1),$namelength);
}
else if($namelength >= $c)
{
$c = 60;
while(substr($data ,$c, 1) != " ")
{
$c -=1;
}
echo"<br>".$thirdname = substr($data ,41, $c);
}
?>
这就是我想要做的:如果名称长度超过 60 个字符,则将名称分成 3 行,每行 20 个字符
我想在空格前读第二个名字
以及在空格前读取单词的第三个名称,即使它算作 20 个字符
我不想让它打断文字
基于上面 GetSet 的说明。试试下面这个,改变你需要改变的,因为我还是不明白你想要什么
$str = "Hubert Blaine Wolfeschlegel Steinhausenbergerdorff Sr.";
$res = "Hubert Blaine hlegel Steinhausenbergerdor rgerdorff Sr.";
$final_res = "";
print_r(explode(" ", $str));
$arr = explode(" ", $str);
$i = 0;
foreach($arr as &$value){
echo("</br>val: ". $value);
if($i == 1 && strlen($value) >= 20){ # 20 length?
$value = substr($value, xxxx, zzzzz); # define your rule here, tbh I still dont get what your condition is
}
$final_res += $value;
}
<?php
$data = "Hubert Blaine Wolfeschlegel Steinhausenbergerdorff Sr.";
// $lines = explode("/ +/", $data);
// $clean = array_map("trim",$lines);
// $output = array_filter(array_unique($clean));
// print_r($output);
$data = trim($data);
echo" Length : ".$namelength = strlen($data);
$a = 20;
if ($namelength < $a)
{
echo"<br>nama 1 : ".$nama1 = substr($data,0,$a);
}
else if ($namelength >= $a)
{
while(substr($data,$a,1) != " ")
{ $a -= 1;}
echo"<br>nama 1 : ".$nama1 = substr($data,0,$a);
}
$b = $a + 20;
if ($b > $namelength)
{
echo"<br>nama 2 : ".$nama2 = substr($data,($a+1),$namelength);
}
else
{
while(substr($data,$b,1) != " ")
{ $b -= 1;}
$b = $b - $a;
echo"<br>nama 2 : ".$nama2 = substr($data,($a+1),$b);
}
$b = $b + $a;
$c = $b + 20;
if ($c > $namelength)
{
echo"<br>nama 3 : ".$nama3 = substr($data,($b+1),$namelength);
}
else
{
echo '<script> alert ("Hanya 60 aksara dipaparkan"); </script>';
while(substr($data,$c,1) != " ")
{ $c -= 1;}
$c = $c - $b;
echo"<br>nama 3 : ".$nama3 = substr($data,($b+1),$c);
}
<?php
$conn1 = new MySqli('localhost','root','','test');
$data = "Hubert Blaine Wolfeschlegel Steinhausenbergerdorff Sr.";
$namelength = strlen($data);
$a = 20;
echo"<br>".$data;
#first name
$a = 20;
if($namelength <= $a)
{
echo"<br>".$firstname = substr($data ,0,$a);
}
else if ($namelength >= $a)
{
$a = 20;
while(substr($data ,$a, 1) != " ")
{
$a-=1;
}
echo"<br>".$firstname = substr($data ,0, $a);
}
#second name
$b = ($a + 20);
if( $namelength <= $b)
{
echo"<br>".$secname = substr($data ,($a),$namelength);
}
else if($namelength >= $b)
{
$b = 40;
while(substr($data ,$b, 1) != " ")
{
$b-=1;
}
$secname = substr($data ,21, $b);
$secname=trim($secname);
echo"<br>".$secname;
}
#third name
$c = ($b + 20);
if ( $namelength <=$c) {
echo"<br>".$thirdname = substr($data ,($c+1),$namelength);
}
else if($namelength >= $c)
{
$c = 60;
while(substr($data ,$c, 1) != " ")
{
$c -=1;
}
echo"<br>".$thirdname = substr($data ,41, $c);
}
?>
这就是我想要做的:如果名称长度超过 60 个字符,则将名称分成 3 行,每行 20 个字符
我想在空格前读第二个名字 以及在空格前读取单词的第三个名称,即使它算作 20 个字符 我不想让它打断文字
基于上面 GetSet 的说明。试试下面这个,改变你需要改变的,因为我还是不明白你想要什么
$str = "Hubert Blaine Wolfeschlegel Steinhausenbergerdorff Sr.";
$res = "Hubert Blaine hlegel Steinhausenbergerdor rgerdorff Sr.";
$final_res = "";
print_r(explode(" ", $str));
$arr = explode(" ", $str);
$i = 0;
foreach($arr as &$value){
echo("</br>val: ". $value);
if($i == 1 && strlen($value) >= 20){ # 20 length?
$value = substr($value, xxxx, zzzzz); # define your rule here, tbh I still dont get what your condition is
}
$final_res += $value;
}
<?php
$data = "Hubert Blaine Wolfeschlegel Steinhausenbergerdorff Sr.";
// $lines = explode("/ +/", $data);
// $clean = array_map("trim",$lines);
// $output = array_filter(array_unique($clean));
// print_r($output);
$data = trim($data);
echo" Length : ".$namelength = strlen($data);
$a = 20;
if ($namelength < $a)
{
echo"<br>nama 1 : ".$nama1 = substr($data,0,$a);
}
else if ($namelength >= $a)
{
while(substr($data,$a,1) != " ")
{ $a -= 1;}
echo"<br>nama 1 : ".$nama1 = substr($data,0,$a);
}
$b = $a + 20;
if ($b > $namelength)
{
echo"<br>nama 2 : ".$nama2 = substr($data,($a+1),$namelength);
}
else
{
while(substr($data,$b,1) != " ")
{ $b -= 1;}
$b = $b - $a;
echo"<br>nama 2 : ".$nama2 = substr($data,($a+1),$b);
}
$b = $b + $a;
$c = $b + 20;
if ($c > $namelength)
{
echo"<br>nama 3 : ".$nama3 = substr($data,($b+1),$namelength);
}
else
{
echo '<script> alert ("Hanya 60 aksara dipaparkan"); </script>';
while(substr($data,$c,1) != " ")
{ $c -= 1;}
$c = $c - $b;
echo"<br>nama 3 : ".$nama3 = substr($data,($b+1),$c);
}