DBにデータを追加しました。テキストには英語とアラビア語の両方が含まれています。だから、私はウェブページにテキストを表示する必要がありますが、私は段落に合計テキストを分割しようとしています。その後PHPを使用して「 n」に関して展開されたときに「 n n」から返される文字は何ですか?
- 段落は
Arabic
テキストが含まれている場合、私は「右から左へ」アライメントとdiv要素のテキスト を表示しています。 - テキストが
English
の場合、「左から」のアライメントで表示されます。/*------ Allign text ------*/ function align_text($text) { $string = $text; $returnString = ''; $paraArray = explode("\n", $string); if(count($paraArray) > 0) { foreach($paraArray as $pa) { $isRight = $this->is_rtl($pa); if($isRight) { $para['para'] = $pa; $para['align'] = 'R'; } else { $para['para'] = $pa; $para['align'] = 'L'; } $paraArr[] = $para; } } else { } return $paraArr; } function is_rtl($string) { $rtl_chars_pattern = '/[\x{0590}-\x{05ff}\x{0600}-\x{06ff}]/u'; return preg_match($rtl_chars_pattern, $string); }
は今、ここで問題です:
だからここですが、私の次のコードです。
Array (
[0] => Array (
[para] => This is testing mail.
[align] => L)
[1] => Array (
[para] => This is testing mail. This is testing mail. This is testing mail.
[align] => L)
[2] => Array (
[para] =>
[align] => L)
[3] => Array (
[para] => This is testing mail.
[align] => L));
あなたが見ることができるように、2行目は、(0行目から数えた場合){ [para] => }
を有しています。 これは「\ n \ n」すなわち2つの連続した改行または<enter>
のためです。
ここにはどのような文字が表示されますか?
私は{ [para] => }
を決定することができません
<?php
if(!is_array($row['chatDesc']))
{?>
<div class="com-text">
<?php echo $row['chatDesc'];?>
</div>
<?php
}
else
{
foreach($row['chatDesc'] as $rC)
{
echo strlen($rC['para']);
if(strlen($rC['para'])==1 &&
($rC['para']==null || $rC['para']=="" || $rC['para']==" " || $rC['para']=="\n"))
{?>
<div class="com-text" style="direction:rtl; clear:both">
[AAA<?php echo $rC['para'];?>AAA]
</div>
<?php
}
else if($rC['align']=='R' && $rC['para']!=' ')
{?>
<div class="com-text" style="direction:rtl; clear:both">
[<?php echo $rC['para'];?>]
</div>
<?php
}
else if($rC['align']=='L' && $rC['para']!=' ')
{?>
<div class="com-text" style="direction:ltr;clear:both">
[<?php echo $rC['para'];?>]
</div>
<?php }
}
} ?>
、このような結果を表示しようとしています。私はこれが表示されDIVなったことがないのです : -
<div class="com-text" style="direction:rtl; clear:both">
[AAA<?php echo $rC['para'];?>AAA]
</div>
しかし、私は条件を変更した場合、唯一のif(strlen($rC['para'])==1)
へ
if(strlen($rC['para'])==1 &&
($rC['para']==null || $rC['para']=="" || $rC['para']==" " || $rC['para']=="\n"))
を、divが表示されつつあります。
divの内容は[AAA AAA]
です。 AAAのペアの間に余分なスペースがあります。この文字が実際に<space>
である場合、なぜif statement
の初期条件が満たされないのですか?
は、シンボルを定義するために 'CHR()'関数を使用してみてくださいhttp://php.net/manual/en/function .chr.php – Justinas
print_r()の代わりにvar_dump()を使用して、変数のタイプ、長さ、および内容の詳細を表示します。言い換えれば、 '' '' var_dump($ rC) '' ''はあなたに必要なものを提供するはずです。あなたのソースデータに応じて、 "見えない"文字は、 '' '\ r''''または他のタイプの空白文字かもしれません。 –
'\ r'またはスペースにすることができます。 – AbraCadaver