如何在文本域中将某些文本右对齐?

3

我在数据库中保存了一些文本(其中包含一些阿拉伯语)。我正在获取这些数据并将它们显示在文本区域中。

enter image description here

我希望将英文文本左对齐,阿拉伯文本右对齐。

为此,我将整个文本分成段落,并检测哪些段落应该右对齐,哪些应该左对齐。

以下是代码。

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

所以,正如您所看到的,每个段落可以在网页(html)中使用div进行右对齐和左对齐排列。
<?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 }
}?>

但我的主要问题是,如何在同一文本框内将阿拉伯语段落右对齐?

当用户查看阿拉伯语网页时,只有阿拉伯文本会显示?你不能像这样做吗:if(english) { div class = "english" } 实际上是复制你的代码,但当用户选择阿拉伯语时,第二个样式类将发挥作用? - izk
1个回答

0

在一个文本区域中无法同时显示左对齐和右对齐的文本。相反,您可以将它们显示为 div 并使用 contentEditable 使其可编辑。每个 div 可以具有自己的对齐方式(左对齐或右对齐)。

例如,您可以声明一个父 div,其中包含每个段落的子 div:

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

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

每个 div 可以独立地被设置为从左到右或从右到左。当用户单击它时,它变得可编辑。
您还可以使用一些第三方 HTML 编辑器来代替文本区域。以下是一些示例(请搜索它们):TinyMCE、Scribe、jHTMLArea、CKEditor、Nicedit 等。

你能解释一下这种方法吗? - Saswat

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接