Тестировщик регулярных выражений

Форум для авторов модов для phpBB 3.0.x. Здесь можно попросить помощи в разработке у коллег.
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Переход на 3.0.6 и выше | FAQ-3 (phpbb3) | Как задавать вопросы | Как устанавливать моды

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
Аватара пользователя
c61
phpBB 2.0.6
Сообщения: 506
Стаж: 13 лет 9 месяцев
Благодарил (а): 42 раза
Поблагодарили: 251 раз

Тестировщик регулярных выражений

Сообщение c61 »

Поскольку иногда возникают вопросы по регулярными выражениям для конкретной версии PHP, предлагается простейший скрипт, который можно разместить на своем сервере и тестировать регулярки именно в тех условиях, в которых скрипты и будут работать (или тестироваться). Версия 2.0.2 (можно выбрать функцию: preg_match_all, preg_match и выдачу позиций - байтов, не символов, скрипт "понимает" оооочень большой текст с тэгами html и т.д.):

Код: Выделить всё

<?php
$version = 'v.2.0.2';
$reg = isset($_REQUEST['reg']) ? $_REQUEST['reg'] : '';
$txt = isset($_REQUEST['txt']) ? htmlspecialchars_decode($_REQUEST['txt']) : '';
$result = $out = false;
if(!empty($reg) && !empty($txt))
{	    if(isset($_REQUEST['p1'])) $result = @preg_match_all($reg,$txt,$matches);
	elseif(isset($_REQUEST['p2'])) $result = @preg_match_all($reg,$txt,$matches,PREG_OFFSET_CAPTURE);
	elseif(isset($_REQUEST['p3'])) $result = @preg_match($reg,$txt,$matches);
	elseif(isset($_REQUEST['p4'])) $result = @preg_match($reg,$txt,$matches,PREG_OFFSET_CAPTURE);
	else $result = false;
	$out = (($result) === false) ? "Ошибка..." : print_r($matches,true);
}
@header("Content-type: text/html; charset=utf-8;");
echo '<html>';
echo 	'<head>';
echo 		'<title>Тестировщик регулярных выражений PHP (Ваша версия ' . PHP_VERSION . ')</title>';
echo 	'</head>';
echo 	'<body leftMargin="0" topMargin="0" marginwidth="0" marginheight="0">';
echo 		'<div align="right"><i><small>Прототип: <a href="http://scriptumplus.ru/regtest/" target="_blank">scriptumplus.ru</a>, адаптировано для PHP: <a href="mailto:c61@yandex.ru" target=_blank">c61</a> ' . $version . '</small></i></div>';
echo 		'<form method="POST">';
echo 			'<input type="button" value="x" onclick="document.getElementById('."'reg').value=''; return false;".'">&nbsp;&nbsp;';
echo				'Регулярное выражение <a href="http://php.net/manual/ru/book.pcre.php" target="_blank">(Perl-совместимое)</a>:<br />';
echo 			'<textarea name="reg" id="reg" style="width:100%" rows=3>' . $reg . '</textarea>';
echo 			'<input type="button" value="x" onclick="document.getElementById('."'txt').value=''; return false;".'">&nbsp;&nbsp;';
echo				'Текст для проверки:<br />';
echo 			'<textarea name="txt" id="txt" style="width:100%" rows=13>' . htmlspecialchars($txt) . '</textarea>';
echo 			'Выполнить:&nbsp;&nbsp;';
echo 				'<input name="p1" type="submit" value="preg_match_all()">&nbsp;&nbsp;';
echo 				'<input name="p2" type="submit" value="preg_match_all()+позиции">&nbsp;&nbsp;';
echo 				'<input name="p3" type="submit" value="preg_match()">&nbsp;&nbsp;';
echo 				'<input name="p4" type="submit" value="preg_match()+позиции">&nbsp;&nbsp;';
echo 		'</form>';
echo 		'Результат выполнения = ' . (($result === false) ? 'false' : $result) . ', массив совпадений:<br /><hr />';
echo 		'<pre id="pre">' . htmlspecialchars($out) . '</pre>';
echo 	'</body>';
echo '</html>';
?>
Файл сохраните в кодировке utf-8. Скрипт можете модифицировать как хотите... Таких тестировщиков в сети полным-полно, и не составляет труда сделать для себя собственный.

Вернуться в «Для авторов (phpBB 3.0.x)»