如何仅修改不含"box"的HTML链接后缀(将.htm改为.php)
解决方法:添加条件判断过滤含"box"的链接
很简单,你只需要在原来的循环里加一个字符串包含检查,就能精准只修改不含"box"的链接啦!
核心思路是:遍历每个<td>里的<a>标签时,先判断链接的href属性里是否包含"box"字符串——如果不包含,再执行后缀替换;如果包含,就跳过不处理。
修改后的完整代码如下:
$html = file_get_html('URL'); // 只修改不含"box"的.htm链接为.php foreach ($html->find("td a") as $a) { // 检查href中是否不包含"box"(严格判断避免误判) if (strpos($a->href, 'box') === false) { $a->href = substr_replace($a->href, 'php', -3); } }
关键细节说明:
- 用
strpos($a->href, 'box') === false来判断:strpos会返回字符串第一次出现的位置,如果没找到则返回false。这里必须用严格相等===,因为如果链接刚好以"box"开头(比如boxpage.htm),strpos会返回0,而0 == false会导致误判,用===就能避免这个问题。 - 原有的
substr_replace($a->href, 'php', -3)逻辑保留不变,只对符合条件的链接生效。
这样一来,像thisismyboxlink123.htm这类含"box"的链接会被跳过,而不含"box"的.htm链接就会被正确替换成.php啦!
内容的提问来源于stack exchange,提问作者Chris
相关产品推荐
相关产品推荐

