KwartzのPHP版がダウンロード出来ないため、またセレクタが貧弱なため、自前で作ってみようと考えています。
この際、独自形式のテキストファイルに記述された{}
で囲まれた範囲のPHPコードを正確に抽出し、かつ、特定の関数や定数、変数を、文字列に置き換える処理が必要になります。
{}
で囲まれた範囲のPHPコードを抽出するだけでも厄介です。
PHPコード内では制御構造・コールバックに使用する{}
やそのネスト、文字列(''
,""
)の他、ヒアドキュメント、Nowdoc、実行演算子などでも{}
が出現します。
これら全てを考慮し、PHPコードの終了位置にある}
を抽出するだけでも面倒です。
またそれ以外に、特定の名前の関数を実行している箇所の式などを、PHPコードを文字列として扱いつつ別のコードに置き換えなくてはなりません。
例えば、関数_elem
の実行箇所を置き換える場合、以下のようになります:
lang
1$i = 0; 2foreach ($list as $user) { 3 $color = ++$i % 2 == 0 ? '#FFCCCC' : '#CCCCFF'; 4 _elem(); 5}
↓
lang
1$i = 0; 2foreach ($list as $user) { 3 $color = ++$i % 2 == 0 ? '#FFCCCC' : '#CCCCFF'; 4 ?> 5 <tr bgcolor="<?php echo $color; ?>"> 6 <td><?php echo htmlspecialchars($user['name']); ?></td> 7 <td><?php echo $user['mail']; ?></td> 8 </tr> 9<?php 10}
関数_elem
の実行箇所を、別のPHPコードで置き換えています。
lang
1 $i = 0; 2 foreach ($list as $user) { 3 $color = ++$i % 2 == 0 ? '#FFCCCC' : '#CCCCFF'; 4- _elem(); 5+ ?> 6+ <tr bgcolor="<?php echo $color; ?>"> 7+ <td><?php echo htmlspecialchars($user['name']); ?></td> 8+ <td><?php echo $user['mail']; ?></td> 9+ </tr> 10+ <?php 11 }
このような処理を行うためには、PHPでPHPコードを解析する必要があります。
しかしながら、そのようなライブラリは一向に見つかりません。
そもそも、「PHPでPHPを解析する」という意味を検索するためのキーワードすら捻り出せません。
「PHP PHPを解析」で検索しても、まるで無関係な内容がヒットしてしまい、検索すらままならない状況です。
PHPでPHPを解析するライブラリはありますか?
または、そのための方法は存在しますか?
回答4件
あなたの回答
tips
プレビュー