PHP使用str_contains判断URL是否包含指定字符串时出错如何解决
代码问题修复
存在的问题
- 语法错误:首个
echo语句的字符串未闭合,echo "amazon;缺少右侧双引号,会触发PHP语法解析报错。 - 逻辑错误:两个
if判断相互独立,else分支仅与第二个if绑定。当URL包含amazon.de但不含brickset时,会同时输出amazon和no URL,不符合预期。 - 匹配规则错误:需求要求匹配
brickset.com,原代码仅判断brickset字符串,会误匹配其他包含brickset关键词的非目标域名。
修复后代码
function url_mapping_name( $urlname ) { if (str_contains($urlname, 'amazon.de')) { return 'amazon'; } if (str_contains($urlname, 'brickset.com')) { return 'brickset'; } return 'no URL'; }
如果需要直接输出结果,调用时使用echo url_mapping_name($目标URL变量);即可。
逻辑说明
按优先级依次判断匹配规则,命中后直接返回结果,避免多规则同时触发输出;所有规则未命中时返回默认值,匹配字符串严格对齐需求要求。
内容的提问来源于stack exchange,提问作者Michal Kovalčík
相关产品推荐
相关产品推荐

