2016-12-12 3 views
0

У меня есть массив, я хочу проверить, есть ли у них клавиши -main.Проверьте, содержит ли ключ массива значение?

foreach ($data as $key => $value) { 
    if (substr($key, -5) == '-main'){ 
     .... 
    } 
} 

Если они имеют «-main» я тогда хочу, чтобы получить текст до «-main». Я:

$myVar = substr($key, 0, -5); 

Есть ли более эффективный способ разделения ключа, так что я не должен делать две суб строки? Возможно, я больше не хочу использовать «-main» и хочу использовать объект поиска различной длины, возможно, как переменную. Тогда мне нужно было бы сделать знак персонажа, а не указывать -5. Есть ли способ включить переменную без необходимости делать число символов?

ответ

0

Вы можете использовать поиск по регулярному выражению (http://php.net/manual/de/function.preg-match.php) для выполнения задачи.

if (preg_match('/^(.*)(-main)$/', $key, $hit)) { 
    $myVar = $hit[1]; 
    // explanation: 
    // $hit[0] will contain the whole result string 
    // $hit[1] will contain the part before "-main" 
    // $hit[2] will be "-main" 
} 

Регулярное выражение выглядит следующим образом:

  • /.../-> по preg_match взыскательных
  • ^-> начало строки (мы хотим, чтобы начать в первой позиции
  • (-main) -> текст поиска, который мы используем
  • $ -> конец строки (мы не хотим, чтобы -main в середине строки соответствовала)
  • (. *) Что-нибудь еще в строке между началом и «-main» - это означает, что это будет возвращено как одна часть $ хитов

Если вы переключите текст, который хотите найти , имейте в виду, что некоторые символы имеют особое значение в регулярном выражении. Поэтому вам может понадобиться избежать их.

Смежные вопросы