Проверьте, присутствуют ли какие-либо значения массива в конце строки - PullRequest
1 голос
/ 05 июня 2011

Я пытаюсь проверить, состоит ли строка из нескольких слов и имеет ли какие-либо значения из массива в конце. Вот что я имею до сих пор. Я застрял на том, как проверить, является ли строка длиннее, чем значение массива, которое проверяется и присутствует ли он в конце строки.

$words = trim(preg_replace('/\s+/',' ', $string));
$words = explode(' ', $words);
$words = count($words);

if ($words > 2) {
    // Check if $string ends with any of the following
    $test_array = array();
    $test_array[0] = 'Wizard';
    $test_array[1] = 'Wizard?';
    $test_array[2] = '/Wizard';
    $test_array[4] = '/Wizard?';

    // Stuck here
    if ($string is longer than $test_array and $test_array is found at the end of the string) {
      Do stuff;
    }
}

Ответы [ 3 ]

2 голосов
/ 05 июня 2011

Под концом строки вы подразумеваете самое последнее слово?Вы можете использовать preg_match

<code>preg_match('~/?Wizard\??$~', $string, $matches);
echo "<pre>".print_r($matches, true)."
";
2 голосов
/ 05 июня 2011

Я думаю, вы хотите что-то вроде этого:

if (preg_match('/\/?Wizard\??$/', $string)) { // ...

Если это должен быть произвольный массив (а не тот, который содержит строки «мастера», которые вы указали в своем вопросе), вы можете динамически построить регулярное выражение:

$words = array('wizard', 'test');
foreach ($words as &$word) {
    $word = preg_quote($word, '/');
}
$regex = '/(' . implode('|', $words) . ')$/';
if (preg_match($regex, $string)) { // ends with 'wizard' or 'test'
0 голосов
/ 05 июня 2011

Это то, что вы хотите (нет гарантии на правильность, не можете проверить)?

foreach( $test_array as $testString ) {
  $searchLength = strlen( $testString );
  $sourceLength = strlen( $string );

  if( $sourceLength <= $searchLength && substr( $string, $sourceLength - $searchLength ) == $testString ) {
    // ...
  }
}

Интересно, не имеет ли здесь какое-то регулярное выражение больше смысла?

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