2016-02-19 210 views
-3

我有代碼來決定是否使用迴文串。我能做些什麼 PHP

<!DOCTYPE html> 
<html> 
<head> 
    <meta http-equiv="Content-Type" charset="utf-8"> 
    <title>Document</title> 
</head> 
<body> 
<form action=pal.php method="get"> 
<input type="text" name="str"> 
    <input type="submit"> 
    </form> 
<?php 
if (isset($_GET['str'])) 
{$k=0;$n=0; 
    $xr=$_GET['str']; 

    if($xr == convert_cyr_string($xr , 'w' , 'k')) 
    { 
     $n=1; 
    } 
    else 
     $n=2; 

    $x=str_replace(" ","",$xr); 

    echo "dlina: ".strlen($x)/$n."<br>"; 

     for ($i=0;$i<strlen($x)/$n;$i++) 
      { 
     #echo $x[$i]."<br>"; 

      if ($x[$i]==$x[strlen($x)/$n-$i-1]) 
      $k++; 
       echo $x[$i]."<br>"; 
      } 
      if ($k==strlen($x)/$n) 
      echo "PALINDROM"; 
      else echo "ne palindrom<br>"; 



    $backurl="http://s2.localhost/project1/php/send_list/pal.php"; 
    print "<script language='Javascript'><!-- 
function reload() {location = \"$backurl\"}; setTimeout('reload()', 10000); 
//--></script>"; 
} 



?> 

</body> 
</html> 

問題代碼只適用於英文符號。西里爾文符號總是打印 當我用符號打印字符串符號時。分別地,代碼在俄語輸入的字符串中找不到迴文。

回答

0

將您的php文件保存爲utf-8而不是ansi。

+0

您需要提供更好的答案。爲什麼這會解決問題,它是如何完成的?提供細節。 – CodeGodie

+0

它不起作用。到處都是UTF-8。 – soloway0000

4

這是因爲UTF-8是多字節編碼,而您正在致力於單字節

$string = 'aйb'; 
echo $string[3]; // b 
echo $string[2]; // � 
echo $string[1]; // � 
echo $string[0]; // a 

在這個例子中,й使用兩個字節進行編碼。如果你按照相反的順序閱讀它們,就會破壞字符串。

您應該使用mb extensionmb_strlen數字符(而不是用strlen字節)和mb_substr得到字符串的單個字符建立自己的迴文。

相關問題