如何使用PHP

时间:2017-12-26 21:06:38

标签: php preg-match-all readfile

我有从文本文件中读取的PHP代码,允许用户搜索指定的字符串。

该系统适用于英文文本,但在阿拉伯语文本方面,系统不会显示任何内容。

我知道问题出现在UNICODE中,但我不知道如何修复它。

文件内容:

  

سيلانالطاقةالحراريةمنالبيئةوإليها。 وعادةمايطلقهذاالاسمعلى   ظاهرةارتفاعدرجاتحرارةالأرضعنمعدلهاالطبيعي。 وقدازدادالمعدل   العالميلدرجةحرارةالهواءعندسطحالأرضب0.74±0.18°Cخلالالمائة   2005年عامالمنتهيةسنة   “أغلبالزيادةالملحوظةفيمعدلدرجةالحرارةالعالميةمنذمنتصفالقرن   العشرينتبدوبشكلكبيرنتيجةلزيادةغازاتالاحتباسالحراري(غازات   البيتالزجاجي)التيتبعثهاالنشاطاتالتييقومبهاالبشر。

     

تخترقأغلبأشعةالشمسالغلافالجويلتصلإلىسطحالأرضوأغلبتلكالأشعة   تقعفيالطولالموجيالمرئي(ضوءالشمسالذيتراهالعين)لذلكيحدثتسخين   更多信息,更多信息,更多信息   更多信息,更多信息   الحياةعليها。

     

تسخنالأرضلامتصاصحرارةالشمس,ثميعيدسطحالأرضإشعاعالطاقةالممتصة   更多信息来自الغلافالجوي   حراري。 وفيهذهالحالةتكوندرجةحرارةسطحالأرضنحو - 2.3درجةمئوية,   发布消息来源:وهذا   المثالمخالفللواقع)。

     

وفيالواقعتعقيدات,حيثيحتجزالغلافالجويجزءامنالأشعةتحت   الحمراء;لوجودجزئياتثانيأكسيدالكربونوبخارالماءالتيتمتصالجزء   更多信息,更多信息更多信息   الغلافالجويإلىالفضاء,ويعملالجزءالممتصمنالأشعةتحتالحمراءفي   الغلافالجويعلىرفعدرجةالحرارة。[1]

php version 7.1.11

我正在使用Xampp和apache服务器

的代码:

<?php
$myFile = "arabic text.txt";
$myFileLink = fopen($myFile, 'r');

$line = 1; 

if(isset($_POST["search"])) {
    $search =$_POST['name'];

 while(!feof($myFileLink)) { 
     $myFileContents = fgets($myFileLink);
     if( preg_match_all('/('.preg_quote($search,'/').')/i', $myFileContents, $matches)) {

        foreach($matches[1] as $match) {
           echo "Found $match on $line";
        }
     }
     ++$line;
 }
}

fclose($myFileLink);
//echo $myFileContents; 
?>

<html>
    <head></head>
    <body>
     <form action="index.php" method="post">
          <p>enter your string <input type ="text"  id = "idName"  name="name" /></p>
          <p><input type ="Submit" name ="search" value= "Search" /></p>
    </form>
    </body>
</html>

3 个答案:

答案 0 :(得分:0)

如果您在Windows上工作,可能您的文件不在utf-8中。 试试这个:

$myFileContents = utf8_encode(fgets($myFileLink));

有关更多信息和其他解决方案,请参阅此主题: Working with files and utf8 in PHP

答案 1 :(得分:0)

因为您的表单发布是unicode字符,如果您的文件包含utf-8编码,则需要使用utf-8

您可以使用以下

检查编码
echo mb_detect_encoding($search);
echo mb_detect_encoding("حلو أل إز جود");

使用utf-8

设置表单
<html>
    <head></head>
    <meta http-equiv="Content-Language" content="ar-sa">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
     <form action="POST.php" method="post">
          <p>enter your string <input type ="text"  id = "idName"  name="name" /></p>
          <p><input type ="Submit" name ="search" value= "Search" /></p>
    </form>
    </body>
</html>

相应地更改编码

如果遗漏任何内容,请添加

答案 2 :(得分:-3)

将此html放在页面顶部

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">