Этой регуляркой можно вычленить кусок строки от ее начала до любых четырех цифр стоящих в скобках.
Включая цифры в скобках.
простой тест в жс:
"Хоббит: Битва пяти воинств / The Hobbit: The Battle of the Five Armies (2014) DVDScr | CAMRip".match(/^(.+\(\d{4}\))/gi)
=>
"Хоббит: Битва пяти воинств / The Hobbit: The Battle of the Five Armies (2014)"
лично я думаю, что у тебя неправильная архитектура/структура приложения, раз возникают такие ситуации. ошибка на то и фатальная - подразумевается что вместо ожидаемого объекта некого класса мы имеем дело не пойми с чем. возможно объект не смог нормально инициализироваться и дальше с ним работать нельзя.
в твоем случае тот код, который работает с объектом, должен знать, что это за объект и какие у него можно вызывать методы. если к нему попадает абы што, у чего может есть такой метод а может нет - это неправильный подход.
в данном случае обработка ошибок/исключений - костыль.
в цикле создается хтмл
потом он выводится с помощью $("#services").html(s);
твоя задача - правильно сделать разметку (читай api.jqueryui.com/accordion/) и затем вызвать конструктор аккордеона.
я для проверки перенес *.html в тип файлов PHP - синтаксис засветился.
но тут есть одна проблема.
в хтмл файлах по умолчанию пхп код не исполняется. вы уверены что так надо?
тогда так
"/(?<=\/)[\w]+(?=\.)/"