2013-03-03 2 views
0

Я разрабатываю скрипт PHP, который использует функцию preg_split. На моем компьютере, используя EasyPhp, все работает, но когда я помещаю файлы онлайн в свободное пространство, функция preg_split кажется не работать (у меня нет сообщения об ошибке на экране, но строка не разделяется). Возможно ли, что эта функция отключена? Версия PHP - PHP 5.2.17 - Optimized for AlterVista, поэтому функция должна работать ... есть ли альтернативы?preg_split отключен на бесплатном сервере?

Сценарий создан для преобразования файла * .pdf (сохраняется как файл * .txt), который содержит список значений с одинаковой структурой на каждой странице. Ниже приведен пример.

Страница 1: Это урожай сегодня. День: 01/12/2012 компании Apple 12 Бананы 14 Киви 2

Page 2: Это сегодня урожай. День: 02/12/2012 компании Apple 19 Бананы 36 Kiwi 0

Page 3: Это сегодня урожай. День: 03/12/2012 компании Apple 1 Бананы 1 Киви 73

Исходный документ содержит почти 50 различных фруктов и имеют более сложную структуру, это всего лишь простой пример достижения и причины, почему Я использую Regex. Я использую следующий код для создания массива с именем $ document_pg, где каждый элемент является страницей исходного документа.

$document_pg = preg_split("(This is the today harvest.)", $document); 

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

+1

Что такое регулярное выражение? Эта информация необходима для того, чтобы рассказать, какие альтернативы вам доступны. –

+1

серверные провайдеры иногда отключают определенные PHP-функции, но preg_split ... nah. Я так не думаю. отключение функции preg_split совершенно неправдоподобно. В любом случае, если функция была отключена, вы получите сообщение об ошибке; это не просто не разделило бы его и продолжало. Здесь почти что-то происходит, но не может помочь вам разобраться, не видя ваш фактический код. – Spudley

+0

О, и работают ли 'preg_match()' вызовы? –

ответ

1

Может быть, что PHP на вашем сервере были compiled --without-pcre-regex (PCRE только стал обязательным с 5.3.0), поэтому единственным вариантом может быть использование устаревших ereg регулярных выражения функции. Работает ли следующая работа?

$document_pg = split('(This is the today harvest\.)', $document); 
1

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

Чтобы ответить на ваш вопрос - полностью можно с помощью файла php ini отключить такие функции. Смотрите здесь disable_functions