регистронезависимый «вычитать» один текст из другого (php) - PullRequest
2 голосов
/ 24 июня 2010

(Извините! Редакция, касающаяся символа $. Объяснение также на примере)

Мне нужно выполнить тест для двух строковых переменных:

$ a, $ b

Если $ a содержится в $ b, мне нужно посмотреть, содержит ли их «разница» ($ b- $ a) символ $.Если это так, тогда верните «разницу», иначе во всех других случаях тест должен вернуть FALSE

Также $ a должен встречаться только в КОНЦЕ $ b ...

$b = "abcde" $ a = "cde" должно привести к значению true (не $ обнаружено)

$ b = "zyw $ abcde" $ a = "cde" должно привести к значению false ($ обнаружено)

$ b = "cdeab" $ a = "cde" должно приводить к ложному (НЕ в конце)

$ b = "zxwq" $ a = "cde" должно приводить к ложному ($a не существует в $ b)

HTH!

Ответы [ 4 ]

1 голос
/ 24 июня 2010
  • Используйте strpos для определения положения $ a в $ b
  • Используйте substr, чтобы получить детали из $ b, которые не содержат $ a
  • Использоватьstrpos чтобы проверить, содержат ли эти части $.
0 голосов
/ 24 июня 2010
$a = 'cde';
$regex = '/^[^$]*' . $a . '$/m';
if (preg_match($regex, $b)) {
    # Successful match
} else {
    # Match attempt failed
}
0 голосов
/ 24 июня 2010
$ret = false;
if (strpos($b, $a) !== false) {
    $ret = (substr_count($b) > substr_count($a));
}

$ ret - ваш ответ

0 голосов
/ 24 июня 2010

Изменить : обновлено после редактирования вопроса

Это должно работать:

<?php

function string_func_thing($a, $b) {
    $count = 0;

    //get $b with $a removed
    $result = str_ireplace($a, '', $b, $count);   

    //if $a was not in $b
    if (!$count) {
        return false;
    }
    //if whatever is left contains $
    if (false !== strpos($result, '$')) {
        return false;
    }

    return true;
}


var_dump( string_func_thing('ter', 'computer$') ); //bool(false) 
var_dump( string_func_thing('ter', 'computer') ); //bool(true) 
var_dump( string_func_thing('hello', 'computer') ); //bool(true) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...