我在數據庫中添加了一些數據。該文本包含英文和阿拉伯文。所以,雖然我需要在網頁上顯示文字,但我試圖將全文分成段落。使用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));
正如你所看到的,第二行(如果從第0行數)有{ [para] => }
。 這是因爲「\ n \ n」,即兩個連續的換行符或<enter>
。
我到這裏來的角色是什麼?
當試圖顯示這樣的結果,
<?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 }
}
} ?>
我無法確定{ [para] => }
。 我從來沒有得到這個DIV顯示: -
<div class="com-text" style="direction:rtl; clear:both">
[AAA<?php echo $rC['para'];?>AAA]
</div>
但是,如果我改變的條件下,
if(strlen($rC['para'])==1 &&
($rC['para']==null || $rC['para']=="" || $rC['para']==" " || $rC['para']=="\n"))
只if(strlen($rC['para'])==1)
,是越來越顯示DIV。
div的內容是[AAA AAA]
。 AAA對之間有一個額外的空間。如果這個字符確實是<space>
那麼爲什麼if statement
中的初始條件不令人滿意?
嘗試使用'CHR()'函數定義符號http://php.net/manual/en/function .chr.php – Justinas
首先使用var_dump()而不是print_r()來查看有關變量類型,長度和內容的更多細節。換句話說''''var_dump($ rC)''''應該爲你提供你所需要的。根據您的源數據,「不可見」字符可能是「\ r」或其他類型的空白字符。 –
可能是'\ r'或空格。 – AbraCadaver