PHP字符串反转不工作
我试图将RTL的字符串反转为LTR,但也在反转方括号。斯特列夫之所以成功是因为 它实际上不适用于UTF8字符串。所以我写了一个自定义函数,下面是我的代码PHP字符串反转不工作,php,string,reverse,Php,String,Reverse,我试图将RTL的字符串反转为LTR,但也在反转方括号。斯特列夫之所以成功是因为 它实际上不适用于UTF8字符串。所以我写了一个自定义函数,下面是我的代码 $str='תירס גדול A-10 (פרי גליל)'; function utf8_strrev($str) { $arr = ''; $words = explode(" ", $str); $start_tag = '('; $end_tag = ')'; foreach ($words
$str='תירס גדול A-10 (פרי גליל)';
function utf8_strrev($str)
{
$arr = '';
$words = explode(" ", $str);
$start_tag = '(';
$end_tag = ')';
foreach ($words as $word)
{
if (preg_match("/\p{Hebrew}/u", $word))
{
preg_match_all('/./us', $word, $ar);
echo print_r($ar[0]);
echo '<br>';
$arr = join('', array_reverse($ar[0])) . " " . $arr;
} else
{
preg_match_all('/./us', $word, $ar);
$arr = join('', $ar[0]) . " " . $arr;
}
}
return $arr;
}
应该是什么
(לילג ירפ) A-10 לודג סרית
如有任何疑问,将不胜感激 在KoenHoeijmakers发布的文档评论中找到此功能。我测试过,但我不懂希伯来语,所以很难判断它是否正常工作
function utf8_strrev($str){
preg_match_all('/./us', $str, $ar);
return join('',array_reverse($ar[0]));
}
编辑
基于再次阅读您的问题,我认为这能满足您的需要吗
function utf8_strrev($str)
{
$arr = '';
$words = explode(" ", $str);
$start_tag = '(';
$end_tag = ')';
foreach ($words as $word)
{
if (preg_match("/\p{Hebrew}/u", $word))
{
preg_match_all('/./us', $word, $ar);
$arr = join('', array_reverse($ar[0])) . " " . $arr;
} else
{
preg_match_all('/./us', $word, $ar);
$arr = join('', $ar[0]) . " " . $arr;
}
}
return preg_replace(array('/\)(.)/','/(.)\(/','/\}(.)/','/(.)\{/'),array('($1','$1)','{$1','$1}'),$arr);
}
$str='תירס גדול A-10 {פרי גליל}';
echo utf8_strrev($str);
输出
再说一遍,我不读希伯来语,但希望它能回答你的问题
注意我使用
preg\u replace
而不是str\u replace
的原因是字符串替换方法给了我类似(somthing something(
或)something something)的文本,试试这个:有一个函数可以满足您的需要:)它实际上不适用于UTF8字符串。它总是用括号括起来吗?只需在末尾使用str_replace
您不想反转字符串-您想将其从RTL更改为LTR-这可能有效:@AzharMuhammad进行了编辑,让我知道它是否有效。我必须查看它是否仍然反转,如果是,我将在我的计算机上编辑它。
function utf8_strrev($str)
{
$arr = '';
$words = explode(" ", $str);
$start_tag = '(';
$end_tag = ')';
foreach ($words as $word)
{
if (preg_match("/\p{Hebrew}/u", $word))
{
preg_match_all('/./us', $word, $ar);
$arr = join('', array_reverse($ar[0])) . " " . $arr;
} else
{
preg_match_all('/./us', $word, $ar);
$arr = join('', $ar[0]) . " " . $arr;
}
}
return preg_replace(array('/\)(.)/','/(.)\(/','/\}(.)/','/(.)\{/'),array('($1','$1)','{$1','$1}'),$arr);
}
$str='תירס גדול A-10 {פרי גליל}';
echo utf8_strrev($str);
{לילג ירפ} A-10 לודג סרית