2016-05-25 3 views
3

Ich habe etwas Text (der auch etwas Arabisch enthält) in DB gespeichert. Ich hole die Daten und zeige sie im Textfeld an.Wie richtet man einen Text so aus, dass er rechtsbündig im Textbereich ausgerichtet ist?

enter image description here

Ich möchte den englischen Text links ausgerichtet werden soll, und der arabische Text rechts ausgerichtet werden.

Dazu habe ich den ganzen Text in Absätze aufgeteilt und finde heraus, welcher Absatz rechtsbündig sein sollte und welcher linksbündig sein sollte.

Hier ist der Code.

/*------ 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); 
} 

So, wie Sie sehen können, kann jeder Absatz nach rechtsbündig angeordnet und links ausgerichtet, wenn sie in der Homepage (HTML) mit div anzeigt.

<?php 
foreach($paraArr as $row) 
{ 
    if($row['align'] == 'L') 
    {?> 
    <div class="left-align"><?php echo $row['para'];?></div> 
    <?php 
    } 
    else 
    {?> 
    <div class="left-align"><?php echo $row['para'];?></div> 
    <?php } 
}?> 

Aber meine Hauptfrage ist, Wie kann ich ausrichten Arabisch Absatz als direkt in SAME TextArea- ausgerichtet?.

+0

Arabischer Text wird nur angezeigt, wenn Benutzer auf der Webseite in arabischer Sprache schaut? Kannst du sowas nicht machen wie if (Englisch) {div class = "english"} Duplizierst du deinen Code, aber wenn der Benutzer die zweite arabische Klasse auswählt, kommt das ins Spiel? – izk

Antwort

0

Sie können es nicht tun (zeigt links und rechts ausgerichteten Text) in einem Textfeld. Stattdessen können Sie sie als divs anzeigen und sie mithilfe der contentEditable bearbeitbar machen. Jedes div kann seine eigene Ausrichtung haben (links oder rechts).

Zum Beispiel können Sie einen Elternteil ein Kind div div pro Absatz erklären enthält:

<div> 
     <div contenteditable="true"> 
      Paragraph one 
     </div> 

     <div contenteditable="true"> 
      Paragraph 2 
     </div> 
</div> 

Jedes div gestylt werden kann unabhängig von links nach rechts oder von rechts nach links werden. Es kann bearbeitet werden, wenn der Benutzer darauf klickt.

Sie können auch einen HTML-Editor eines Drittanbieters anstelle des Textfelds verwenden. Hier sind einige Beispiele (google sie): TinyMCE, Scribe, jHTMLArea, CKEditor, Nicedit, ...

+0

Können Sie diesen Ansatz erklären? – Saswat

Verwandte Themen