次の場合に検証エラーをスローしたい -
- ユーザー入力にはphpタグが含まれています
<?php
(短いタグも<?
) <?xml
ただし、php タグが検出されない場合は、XML タグ ( ) を許可したいと考えています。- 両方が存在する場合は、エラーをスローしたいと思います。
私は今、次の正規表現に取り組んでいます-
`(.*?)<\?(php)?[^xml](.*?)`
ただし、入力に PHP の短いタグしか含まれていない場合は一致しません。
以下に一致させたい -
PHP ショートタグ
<?
PHP タグ
<?php
xml タグが存在する場合の PHP タグ
<?php ?>
<?xml
以下に一致しない
<?xml
アップデート
この正規表現を使用しても、入力に末尾の空白がなく、のみが含まれている場合、文字は(.*?)<\?[^x](.*?)
検出されません。次の位置に条件を追加して、さらに文字がある場合にのみさらにチェックする必要があると思います-<?
<?
|
v
`(.*?)<\?[^x](.*?)`
この - を試してみると(.*?)<\?([^x]?)(.*?)
、xml
. 私がぶら下がっているところがわかりますか?ここで正規表現が許可するものがあると思います。何か案は?