Ich habe einige Daten in einem DB hinzugefügt. Der Text enthält sowohl Englisch als auch Arabisch. Also, während ich den Text in der Webseite anzeigen muss, versuche ich den gesamten Text in Absätze zu teilen.Was ist das Zeichen, das von " n n" zurückgegeben wird, wenn es in Bezug auf " n" mit PHP explodiert?
- Dann, wenn ein Absatz
Arabic
Text enthält, bin ich die Anzeige der Text in einem div mit „von rechts nach links“ Ausrichtung. - Wenn sich der Text in
English
befindet, wird er in der Ausrichtung "von links nach rechts" angezeigt.
Also hier ist mein Code ein:
/*------ 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);
}
Nun, hier ist das Problem.
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));
Wie Sie sehen können, die zweite Reihe (wenn von der 0. Reihe gezählt) hat { [para] => }
. Das liegt an "\ n \ n", d. H. Zwei aufeinanderfolgenden Zeilenumbrüchen oder <enter>
.
Was ist der Charakter, den ich hier bekomme?
Beim Versuch, das Ergebnis wie folgt
<?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 }
}
} ?>
Ich bin, angezeigt werden nicht in der Lage die { [para] => }
zu bestimmen. ich nie bin immer dies angezeigt Div, -
<div class="com-text" style="direction:rtl; clear:both">
[AAA<?php echo $rC['para'];?>AAA]
</div>
Aber wenn ich den Zustand zu ändern,
if(strlen($rC['para'])==1 &&
($rC['para']==null || $rC['para']=="" || $rC['para']==" " || $rC['para']=="\n"))
nur if(strlen($rC['para'])==1)
, die div angezeigt bekommen.
Der Inhalt der div ist [AAA AAA]
. Es gibt einen zusätzlichen Abstand zwischen den AAA-Paaren. Wenn dieses Zeichen in der Tat ein <space>
ist, warum dann die Anfangsbedingung in der if statement
ist nicht befriedigend?
Try 'chr()' Funktion Symbol zu definieren http://php.net/manual/en/function zu verwenden .chr.php – Justinas
Beginnen Sie mit var_dump() anstelle von print_r(), um mehr Details über den Typ, die Länge und den Inhalt der Variablen zu erhalten. Mit anderen Worten: '' '' var_dump ($ rC) '' '' sollte Ihnen das liefern, was Sie brauchen. Abhängig von Ihren Quelldaten kann das "unsichtbare" Zeichen "' '' '' '' '' '' 'oder ein anderer Typ von Leerzeichen sein. –
Könnte '' '' oder Raum sein. – AbraCadaver