質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

4回答

1922閲覧

[PHP] たくさんの*.phpファイルで最初の「<?」を「<?php」にするには

jun_yshmt

総合スコア34

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

1グッド

3クリップ

投稿2014/09/16 23:21

人が書いたPHPの大量のソースコードを保守することになったのですが、最初のタグがすべて「<?」になっているので、正式な「<?php」に書き換えたいと思っています。

基本的には、次のような正規表現を使えばいいのかと思うのですが、

lang

1<?(\s|\n|\t|[^a-zA-Z])

実際には拡張子もいろいろありますし、フォルダの奥深い階層にあるファイルもありますし、そもそもどんな始まり方をしているファイルがあるかわかったものではありません。
何か良い方法はありますでしょうか。

DrqYuto👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

BA の方法が適切っぽいけど、正規表現対応のエディタで引っ掛けるなら<?\sで良いかと。

<?(スペース)<?(改行)が対象位になるはずなので。

投稿2019/12/20 13:00

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

それは、あまり良い方法ではないですね。やはり餅は餅屋に。
PHPのTokenizer(基本モジュール。PHP4.3以降デフォルトで有効)を使いましょう。

たとえば

lang

1token_get_all 2http://php.net/manual/ja/function.token-get-all.php

は、PHPのソースコードを読みこんでトークンの配列にしてくれます。

パーサトークンの一覧
http://php.net/manual/ja/tokens.php
もご覧ください。

「<?php」「 <?」「<%」のT_OPEN_TAG
「<?=」「 <%=」のT_OPEN_TAG_WITH_ECHO

がありますので、
T_OPEN_TAGを「<?php」に、T_OPEN_TAG_WITH_ECHOを「<?php print」などに置換すればよい、ということになります。

投稿2014/09/17 01:31

zarbon_22

総合スコア85

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

vscodeの置換で一発で変えれますよ
ファイルやフォルダの指定もできますし
変換する場所の確認もできます!

投稿2020/05/02 15:22

mizo777

総合スコア28

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

bashですと

grep -l '<?' ./* | xargs sed -i.bak -e 's/<?/<?php/g'

参考
複数のファイル内の文字列をまとめて置換するLinuxコマンド - Qiita
https://qiita.com/kkyouhei/items/b4ff839a2f36ba194df3
"カレントディレクトリのファイル全てを対象にする場合
bash:bash
1
grep -l '置換対象の文字列' ./* | xargs sed -i.bak -e 's/置換対象の文字列/置換後の文字列/g'"

投稿2019/12/20 12:47

DrqYuto

総合スコア432

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問