preg_match работает на одном сервере, но не на другом

У меня один и тот же скрипт php preg_match, проверяющий один и тот же файл, на двух серверах linux они не отображаются одинаково (одинаковая версия php). Пытаюсь проверить, есть ли сегодня лошади на моем местном треке. Я пробовал preg_last_error не показывает ошибки.

$pattern='/<p class=\"clear\" style=\"margin-top:-17px;\">&nbsp;<\/p> -->

<h4 class=\"lightgreenbg padding\">/';
if (preg_match($pattern, $HTMLcontent)) { echo ("Found races today. <br>"); } else { echo ("No races found."); }

$ HTMLcontent можно найти один сервер1 а также server2. Не уверен, что это проблема кодирования, php или ftp. Когда я передаю данные по FTP с сервера 1 на сервер 2, он также перестает работать на сервере 2. Но когда я загружаю их на свой компьютер, а затем сервер FTP 2 работает нормально. Очень странно.

0

Решение

Это может быть связано с разницей в конце строки, если ваш сервер и рабочая станция используют разные операционные системы. Windows / Dos использует \r\n тогда как Linux использует только \n,

Вы можете решить эту проблему, сопоставляя любые пробелы, а не точные пробелы — вы делаете это с помощью \s:

$pattern='/<p class=\"clear\" style=\"margin-top:-17px;\">&nbsp;<\/p> -->\s+<h4 class=\"lightgreenbg padding\">/';

Если это не конец строки, то вы на самом деле не ищете регулярное выражение, а просто строку. поэтому я бы сказал, что определенно не используйте preg_match, так как strpos намного эффективнее:

<?php
$mystring = 'abc';
$findme   = 'a';
$pos = strpos($mystring, $findme);

// Note our use of ===.  Simply == would not work as expected
// because the position of 'a' was the 0th (first) character.
if ($pos === false) {
echo "The string '$findme' was not found in the string '$mystring'";
} else {
echo "The string '$findme' was found in the string '$mystring'";
echo " and exists at position $pos";
}
?>

От: http://php.net/manual/en/function.strpos.php

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector