我在数组中搜索阿拉伯语单词时遇到了问题

问题描述 投票:0回答:4

大家好,我在工作中遇到了返回 api 响应的问题 主要问题是

$name = "تش";
$restaurants =   [
  "تشك تشيكن",
  "بيتزا ساخنة",
  "كينتاكي",
  "تشيكن سبوت"
];

foreach ($restaurants as $restaurant) {
  if (strpos($restaurant, $name)) {
    echo "founded";
  }
}

有什么帮助吗?

php strpos elasticsearch-php
4个回答
1
投票

您的第一个参数应该是

$item
,然后您要搜索的关键字是
$search

所以你的代码应该是这样的:

$item = "أهلا وسهلا بكم";
$search = "وسهلا";
if (strpos($item, $search)){
    echo "founded";
}else {
    echo "not founded";
}

1
投票

strpos中的第一个参数应该是

haystack
,这是您要搜索的字符串,第二个参数是
needle
,这是您要搜索的字符串

    <?php
    
    $item = "أهلا وسهلا بكم";
    $search = "وسهلا";

     // look if $search is in $item
    if (strpos($item, $search)){
       echo "founded";
    }else {
    echo "not founded";
    }

https://3v4l.org/C07o8


0
投票

基于这个duplicate,阿拉伯字符是使用多字节字符编码的,所以你需要使用

grapheme_strpos()

if (function_exists('grapheme_strpos')) {
    $pos = grapheme_strpos($tweet, $keyword);
} elseif (function_exists('mb_strpos')) {
    $pos = mb_strpos($tweet, $keyword);
} else {
    $pos = strpos($tweet, $keyword);
}

0
投票

终于找到答案了

   $name = "تش";
    $restaurants =   [
      "تشك تشيكن",
      "بيتزا ساخنة",
      "كينتاكي",
      "تشيكن سبوت"
    ];
    
    foreach ($restaurants as $restaurant) {
      if (strpos($restaurant, $name) !== false) {
        echo "founded";
      }
    }
© www.soinside.com 2019 - 2024. All rights reserved.