PHP: сравнить подстроки - PullRequest
       19

PHP: сравнить подстроки

2 голосов
/ 12 апреля 2011

Действительно быстрый вопрос noob с php:

Я пытаюсь создать условный оператор, в котором я могу проверить, соответствует ли переменная частично подстроке.

Более конкретно в моем случае:

$ cal - это имя файла, я хочу, чтобы, если $ cal содержит ".cfg", он выводил некоторый текст.

псевдокод:

<?php if ($cal == "*.cfg")
 {
    echo "Hello ";
 }
?> 

Ответы [ 5 ]

6 голосов
/ 12 апреля 2011
if (strpos($cal, ".cfg") !== false)
{
  echo "some text";
}

РЕДАКТИРОВАТЬ

Мое предложение для точного соответствия "* .cfg":

$cal = "abc.cfgxyz";
$ext = "cfg";

if (strrpos($cal, ".".$ext) === strlen($cal)-strlen($ext)-1)
{
    echo "matched";
}
3 голосов
/ 12 апреля 2011

для простых шаблонов strpos подойдет хорошо.

if (strpos ('.cfg', $string) !== false)
{
    // etc
}

Для более сложных компонентов вам нужен preg_match, который может сравнивать строку с регулярным выражением.

if (preg_match ('/.*?\.cfg/', $string))
{
    // etc
}

Первый предлагает лучшую производительность, но последний более гибкий.

3 голосов
/ 12 апреля 2011

В этом случае вы можете просто просмотреть последние четыре символа $cal, используя substr:

if (substr($cal, -4) === '.cfg') {
    echo "Hello ";
}

Вы должны посмотреть регулярные выражения для более сложных задач.

3 голосов
/ 12 апреля 2011
if ( preg_match('/\\.cfg$/',$cal) ) echo "Hello ";

следует к нему.(Предполагая, что вы хотите сопоставить конец входной строки, в противном случае пропустите $)

2 голосов
/ 12 апреля 2011

Здесь вы можете использовать различные подходы.Например:

$cal = explode('.', $cal);
if(last($cal) === "cfg")) {
    echo "Hello";
}

Или с помощью регулярных выражений (которые, вероятно, намного медленнее, чем, например, strpos):

if(preg_match("/\.cfg$", $cal)) {
   echo "Hello";
} 

Я, честно говоря, не знаю, как работает версия explode ()сравнивается с substr () с отрицательным значением (ответ одиночного дня) или strpos () (в котором есть свои недостатки, ответ Frosty Z).Вероятно, версия substr () является самым быстрым, в то время как регулярные выражения - самый медленный способ сделать это).

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