広告

【php】xmlを出力する際にはphpの短縮型タグ(short_open_tag)に注意

プログラミング全般

phpは開始タグと終了タグをつかってその内側にコードを記述します。

<?php
  echo 'Hello world!';
?>

開始タグは<?phpが使われるほか、echoの短縮形として<?=を使うことも可能です。

<?= 'Hello World!' ?>

上記の2点はよく使われると思いますが、意外に忘れがちなのが<?php自体の短縮形として<?も利用できるようになっているということ。

<?
  echo 'Hello World!';
?>

ただし、この記述はphpのすべての環境で使えるわけではなく、php.iniの設定などで有効化されている必要があります。

<?の短縮型は環境によって無効にされていることも多く、作成したコードの互換性が無くなってしまうリスクもあるため、通常は<?phpもしくは<?=を利用することが推奨されます。

またこの記述の注意点として、xml文書の宣言にも同様の<?~?>記述ルールがあるため、xml形式のデータの出力するときなどに問題が起きる場合があります。

<?php

...

?><?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
...
</urlset>

<?は上記のようなxml文書形式の取り扱いなどの問題もあるため、php.iniの設定で短縮型の利用自体をオフにしておいたほうが確実かと思います。

phpで<? ?>の短縮型タグを無効にする

phpで<?の短縮型タグを無効にするには以下の設定を行います。

php.iniで無効化する

php.iniを開き、以下の記述を追記します。

short_open_tag = Off

コメント

タイトルとURLをコピーしました