为了账号安全,请及时绑定邮箱和手机立即绑定

如何将 javascript regex 转换为 php regex

如何将 javascript regex 转换为 php regex

PHP
叮当猫咪 2021-11-26 19:43:17
我想将此 javascript regex 转换为 php regex。我已经测试了代码可以运行。<img.*?src='(?!http[s]*:\/\/img.[a-zA-Z0-9]*.test\/)(.*?)'<img alt='' src='http://img.dev.teeeest/images/UID' /><img alt='' src='https://img.deaaav.test.com/images/UID/' /><img alt='' src='http://api.com/images/UID' /><img alt='' src='http://img.deaSassav.test/images/UID' /><img alt='' src='https://img.dev.test/images/UID' />它将选择其中的前三个。我希望 php regex 将具有相同的结果。$body = "<img alt='' src='http://img.dev.teeeest/images/UID' /><img alt='' src='https://img.deaaav.test.com/images/UID.ux/' /><img alt='' src='http://api.com/images/UID' /><img alt='' src='http://img.deaSassav.test/images/UID' /><img alt='' src='https://img.dev.test/images/UID' />";$body = stripslashes($body);$img_array = array();preg_match_all('/<img[^>]*?src=[\'|\"](http[s]*:\/\/img.[a-zA-Z0-9]*.test\/[^"|^\']*?)[\'|\"][^>]*?>/isU', $body, $img_array);$img_array = array_unique($img_array[1]);echo "<pre>";print_r($img_array);echo "</pre>";我使用网站测试https://regex101.com/ 我尝试在 http[s] 之前使用添加 ^。像这样<img[^>]*?src=[\'|\"](^http[s]*:\/\/img.[a-zA-Z0-9]*.test\/)[^"|^\']*?[\'|\"][^>]*?>我想否定什么有这个http[s]*:\/\/img.[a-zA-Z0-9]*.test\/
查看完整描述

2 回答

?
蛊毒传说

TA贡献1895条经验 获得超3个赞

你的 javascript 正则表达式工作正常;您只需要将s标志更改为m:


$body = "<img alt='' src='http://img.dev.teeeest/images/UID' />

<img alt='' src='https://img.deaaav.test.com/images/UID.ux/' />

<img alt='' src='http://api.com/images/UID' />

<img alt='' src='http://img.deaSassav.test/images/UID' />

<img alt='' src='https://img.dev.test/images/UID' />";

$body = stripslashes($body);

$img_array = array();

preg_match_all("/<img.*?src='(?!http[s]*:\/\/img.[a-zA-Z0-9]*.test\/)(.*?)/imU", $body, $img_array);

echo "<pre>";

print_r($img_array[0]);

echo "</pre>";

输出:


<pre>Array

(

    [0] => <img alt='' src='http://img.dev.teeeest/images/UID' />

    [1] => <img alt='' src='https://img.deaaav.test.com/images/UID.ux/' />

    [2] => <img alt='' src='http://api.com/images/UID' />

)

</pre>

3v4l.org 上的演示


查看完整回答
反对 回复 2021-11-26
?
米脂

TA贡献1836条经验 获得超3个赞

这个表达式也可能有效:

<img\b.*?\bsrc=['"](?!https?:\/\/img\.[a-z0-9]*\.test\/)([^'"]*)

如果你想探索/简化/修改表达式,它已在regex101.com 的右上角面板中进行了 解释。如果您愿意,您还可以在此链接中观看它如何与某些示例输入匹配。


查看完整回答
反对 回复 2021-11-26
  • 2 回答
  • 0 关注
  • 186 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号