Когда у вас есть конкретная строка, которую вы ищете, используйте регулярные выражения с небольшим перерасходом. Вы будете в порядке, используя одну из стандартных функций поиска строк PHP здесь.
Функция strstr будет работать, но обычный PHP Wisdom (читай: миф, легенда, суеверие, руководство ) говорит, что использование функции strpos даст лучшую производительность. то есть что-то вроде
if(strpos($string, '_archived') !== false) {
}
Здесь вы захотите использовать оператор истинного неравенства, так как strpos возвращает «0», когда находит иглу в начале своего стога сена. См. руководство для получения дополнительной информации по этому вопросу.
Что касается вашей проблемы, механизм регулярных выражений PHP ожидает, что вы заключите строку регулярного выражения в набор разделителей, который может быть одним из нескольких различных символов ("/" или "|" или "(" или ") {"или" # ", или ...). Механизм PHP считает, что вам нужно регулярное выражение
.*
с набором модификаторов шаблона, которые
_archived$
Итак, в будущем, когда вы будете использовать регулярное выражение, попробуйте что-то вроде
//equivilant
preg_match('/(.*)_archived$/i',$string);
preg_match('{(.*)_archived$}i',$string);
preg_match('#(.*)_archived$#i',$string);
Символы "/", "#" и "{}" являются вашими разделителями. Они не используются в матче, они используются для того, чтобы сказать движку «что-нибудь между этими символами - мой рег. но я включил его здесь, чтобы вы могли видеть, как выглядит модификатор шаблона, и чтобы помочь вам понять, зачем вам в первую очередь разделители.