我想,如果拋出驗證錯誤 -PHP的標籤忽略XML標籤的正則表達式匹配
- 用戶輸入包含PHP標籤
<?php
(也簡稱爲標籤<?
) - ,但我想允許XML標記(
<?xml
)如果沒有檢測到PHP標籤。 - 在兩者的存在下,我想拋出錯誤。
我一直高達現在下面的正則表達式 -
`(.*?)<\?(php)?[^xml](.*?)`
但如果輸入僅包含PHP短標記不匹配。
我想匹配以下 -
PHP短標記
<?
PHP標籤
<?php
在XML標籤的存在PHP標籤
<?php ?>
<?xml
不匹配以下
<?xml
更新
使用這個表達式(.*?)<\?[^x](.*?)
如果輸入僅包含<?
沒有檢測<?
系統字符,沒有任何結束的空白。我想我只需要在以下位置添加一個條件,以進一步檢查只有當更多的字符有 -
|
v
`(.*?)<\?[^x](.*?)`
如果我這個嘗試 - (.*?)<\?([^x]?)(.*?)
,它不再排除xml
。你看到我掛在哪裏嗎?我猜這裏有一些正則表達式允許的。有任何想法嗎?
感謝您的回答。當我必須檢查PHP標籤的存在時,我最初沒有使用正則表達式。後來當我需要額外檢查XML標籤時,我選擇了正則表達式。我想,我不清楚什麼時候切換到正則表達式匹配的基本原理。在我的情況下,正則表達式會是一種矯枉過正的行爲嗎?無論如何,如果輸入只包含<<?',而沒有任何結尾空格,則使用此正則表達式'(。*?)<\?[^ x](。*?)'不會檢測到<?'特徵。有任何想法嗎? –
如果我使用這個邏輯if(文件包含'<?php')或(文件包含'<?'但*不包含'<?xml')',包含'<?'和< ?xml'不會拋出錯誤(這個輸入不會拋出錯誤 - '<?<?xml')。我想,如果必須進行非正則表達式檢查,我需要進一步檢查一些位置或每場比賽的數量。那麼,你認爲在這種情況下正則表達式檢查會更好嗎? –
啊,謝謝你指出。我會更新我的答案。 –