簡體   English   中英

正則表達式和大小寫

[英]regex and upper and lower case

我正在使用這個

preg_match('/<meta\s+http-equiv="Content-Type" content="([^;]+)(?:;\s*charset=["]?([^"^\s]*))?"/i', $html, $match)

得到字符集,但這不適用於此

<META http-equiv=Content-Type content="text/html; charset=windows-1256">

有任何想法嗎?

您在preg_match()中有雙引號但在html示例中沒有。

這里: http-equiv = Content-Type

如果你想支持preg_match()在這里使用和不使用引號,可以簡單地將代碼更改為:

preg_match('/<meta\s+http-equiv=(")?Content-Type(")?\s+content="([^;]+)(?:;\s*charset=["]?([^"^\s]*))?"/i', $html, $match);

在屬性訂單更改時將使用的更好的版本:

preg_match('/<meta.+?content="([^;]+)(?:;\s*charset=["]?([^"^\s]*))?"/i', $html, $match);

如果你只對獲取字符集感興趣,為什么不使用更簡單的東西:

preg_match('/charset=([^"]+)/i', $html, $match);

當然,您可以調整它以滿足您的特定需求,但要保持簡單,讓它更容易上班。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM