2013-08-08 5 views
1
나는이와 <?=[something]?>처럼 모든 PHP 라인 교체해야

: <?php echo [something]; ?> 문제가 뭔가 절에도 에서 거의 아무것도있을 수 있다는 것입니다을?< 그러나 인접하지 않아야합니다. 나는 일종의 정규 표현식에 새로 왔으며 매우 어수선한 표현 인 \<\?\=([a-zA-Z0-9()=#<>\[\]\\/'"._$\?:, \-]*)([;]*)\?\>을 써서 <?php echo \1; ?>으로 바꿨다.정규식 - 인접에서 두 개의 문자를 방지

그것은 작동하지만이 같은 일치하지 않을 수 있습니다 : 그것은 모두 한 줄에 때

<?=[something]?><tr><td><?=[something]?>합니다. 전체 라인 전체를 일치시킵니다.

도움이 될 것입니다.

+1

왜 그렇게해야합니까? 그리고 왜' Gordon

+0

욕심이 많은 대신 Reluctant 한정어를 사용해야합니다. Greedy 수량 한정 기호는 일치시킬 전체 패턴을 만족시키는만큼 일치합니다. 캐릭터 클래스의'*'한정 기호를'*?'로 만드십시오. –

+0

전역 검색 /' elclanrs

답변

1

이 코드는 작동합니다 :

$s = '<?=[something]?><tr><td><?=[something]?>'; 
$s = preg_replace('/(<\?)=\s*(\[[^]]*\])\s*(\?>)/', '$1php echo $2; $3', $s); 
var_dump($s); 

출력 :

string(56) "<?php echo [something]; ?><tr><td><?php echo [something]; ?>" 
관련 문제