Задать вопрос

Как правильно регулярно выразиться?

Здравствуйте пишу один препроцессор к PHP, нужна помощь.

Не знаю почему, но у меня не получается выделить нужные части кода, пробелма заключается в переносе строки, хотя в документации написано что .(точка) это любой символ.

Вот на данный момент все как-то так

Задача:
Нужно что бы символы переноса строки он тоже воспринимал.

Вот паттерн
#<\?(.+)\?>#

Вот текст
<?php
$class=get_class($model);
Yii::app()->clientScript->registerScript('gii.crud',"
$('#{$class}_controller').change(function(){
	$(this).data('changed',$(this).val()!='');
});
$('#{$class}_model').bind('keyup change', function(){
	var controller=$('#{$class}_controller');
	if(!controller.data('changed')) {
		var id=new String($(this).val().match(/\\w*$/));
		if(id.length>0)
			id=id.substring(0,1).toLowerCase()+id.substring(1);
		controller.val(id);
	}
});
");
?>
<h1>Crud Generator</h1>

<p>This generator generates a controller and views that implement CRUD operations for the specified data model.</p>

<?php $form=$this->beginWidget('CCodeForm', array('model'=>$model)); ?>

	<div class="row">
		<?php echo $form->labelEx($model,'model'); ?>
		<?php echo $form->textField($model,'model',array('size'=>65)); ?>
		<div class="tooltip">
			Model class is case-sensitive. It can be either a class name (e.g. <code>Post</code>)
		    or the path alias of the class file (e.g. <code>application.models.Post</code>).
		    Note that if the former, the class must be auto-loadable.
		</div>
		<?php echo $form->error($model,'model'); ?>
	</div>


Вот нашел интересную информацию
Википедия
Там написано так:
Метасимвол. (точка) означает один любой символ, но в некоторых реализациях исключая символ новой строки.

Так что делать? У меня PHP.
  • Вопрос задан
  • 2978 просмотров
Подписаться 3 Оценить Комментировать
Решения вопроса 1
@arturphoenix
Добавьте модификтор s (считать весь текст одной строкой) и выключите «жадность» модификатора "+" (обратите внимание на знак вопроса после "+"):
#<\?(.+?)\?>#s
Ответ написан
Пригласить эксперта
Ответы на вопрос 4
MastaEx
@MastaEx
Добавьте модификатор s.
#<\?(.+)\?>#s
Ответ написан
@1099511627776
Пишу все что интересно и на всем на чем интересно
Если я правильно Вас понял то вот так получилось #<\?(.+?)\?>#s получаеться 5 совпадений

Но всетаки лучше чем-то другим а не регэкспом это делать
Ответ написан
@dsd_corp
Простейший вариант и пофиг на multiline с модификатором s:
#<\?([\x00-\xFF]+)\?>#
Ответ написан
Keyten
@Keyten
Может просто принудительно добавить символ новой строки?
Ну вместо
.

написать
[.\n]
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы