Поиск общих символов в строках - PullRequest
0 голосов
/ 26 марта 2012

Я использую этот метод для поиска общих символов в двух строках, а именно: $ a и $ r, но первый символ не печатается. Более того, $ уже собирает общие символы и не позволяет печатать их несколько раз (мне нужно, чтобы каждый символ печатался только один раз), но это не так. Пожалуйста, скажите мне, какие ошибки я делаю.

<?php
$a="BNJUBCI CBDIDIBO";
$r="SBKJOJLBOU";
$already="";
for($i=0;$i<strlen($r);$i++)
{
   if (stripos($a,$r[$i])!=FALSE)
   {
        if (stripos($already,$r[$i])==FALSE)
        {
            $already=$already.$r[$i];
            echo "already=".$already."<br>";
            echo $r[$i]."<br>";
        }
   }
}
?>

Ответы [ 3 ]

5 голосов
/ 26 марта 2012

Используйте !==FALSE вместо !=FALSE. Проблема в том, что stripos возвращает 0, если стрелка находится в начале стога сена, а 0 - ложь. Используя !==, вы заставляете его убедиться, что результат на самом деле ложный, а не просто 0.

Это фактически указано в документах . «RTM» может быть уместным здесь.

Внимание
Эта функция может возвращать логическое значение FALSE, но также может возвращать и не булево значение, которое оценивается как FALSE. Пожалуйста, прочитайте раздел о логических значениях для получения дополнительной информации. Используйте оператор === для проверки возвращаемого значения этой функции.

3 голосов
/ 26 марта 2012

Самый простой способ найти пересечение двух строк в PHP - это превратить их в массивы и использовать для этого встроенные функции.

Далее будут показаны все уникальные и общие символы между двумя строками.

<?php
    $a="BNJUBCI CBDIDIBO";
    $r="SBKJOJLBOU";

    $a_arr = str_split($a);
    $r_arr = str_split($r);

    $common = implode(array_unique(array_intersect($a_arr, $r_arr)));

    echo "'$common'";
?>
1 голос
/ 26 марта 2012

Я думаю, что гораздо более простым решением было бы сделать строки массивами и сравнить их нет?

Что-то вроде:

<?php
$a="BNJUBCI CBDIDIBO";
$r="SBKJOJLBOU";

$shared = implode( '' , array_intersect( str_split($a) , str_split($r) ) );
?>

Это должно вернуть вам строку всех символов в $ a, которые присутствуют в $ r

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...