亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何匹配 php 中包含具有固定數量的字母數字字符的 https url 的字符串?

如何匹配 php 中包含具有固定數量的字母數字字符的 https url 的字符串?

PHP
蝴蝶不菲 2023-06-24 15:24:54
我有一個看起來像這樣的字符串:"res":"https://my.site.com/image/I/fj23l6j2lgk_AM1200_.jpg"我的 bash 正則表達式是(如果我們讓上面等于$str):echo $str | grep -oE "\"res\":\"https://my.site.com/image/I/[[:alnum:]]{11}._[a-zA-Z0-9_]*_.jpg\"" \ | grep -oE "my.site.com/image/I/[[:alnum:]]{11}._[a-zA-Z0-9_]*_.jpg" | head -1干凈地提取出來https://my.site.com/image/I/fj23l6j2lgk_AM1200_.jpg。在 PHP 中,我不確定是否存在與我上面的內容等效的內容。有沒有人有什么建議?
查看完整描述

2 回答

?
滄海一幻覺

TA貢獻1824條經驗 獲得超5個贊

在我看來,您希望驗證合格的 url 是否用雙引號括起來并且前面帶有"res":,那么您只想提取該 url。

開頭的后視和結尾的前視將驗證確切的完整字符串。

必須對點進行轉義才能將其視為字符串文字。

你的下劃線之前有一個額外的點,我不相信你想保留它。

~如果您使用非斜杠字符作為模式分隔符(我將使用),則不需要轉義正斜杠。

[a-zA-Z0-9_]更簡潔地寫為\w.

代碼:(演示

$string = '"res":"https://my.site.com/image/I/fj23l6j2lgk_AM1200_.jpg"';


echo preg_match('~(?<=^"res":")https://my\.site\.com/image/I/[a-zA-z\d]{11}_\w*_\.jpg(?="$)~', $string, $out) ? $out[0] : 'no match';

輸出:


https://my.site.com/image/I/fj23l6j2lgk_AM1200_.jpg


查看完整回答
反對 回復 2023-06-24
?
一只甜甜圈

TA貢獻1836條經驗 獲得超5個贊

使用 PHP ,您可以通過以下方式選擇:


$subject = '"res":"https://my.site.com/image/I/fj23l6j2lgk_AM1200_.jpg"';

$regex = '/https:\/\/my\.site\.com\/image\/I\/[[:alnum:]]{11}_[a-zA-Z0-9_]*_.jpg/'

preg_match($regex , $subject , $matches);


var_dump($matches);

輸出 :


array(1) {

  [0]=>

  string(51) "https://my.site.com/image/I/fj23l6j2lgk_AM1200_.jpg"

}


查看完整回答
反對 回復 2023-06-24
  • 2 回答
  • 0 關注
  • 160 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號