替换<a>标签中href声明的查询字符串[关闭]

问题描述 投票:0回答:1

我想动态替换以下超链接

来自

<a href="/xsearch2?q=some search/21">21</a>

<a href="/xsearch2?q=some search&page=21">21</a>

我怎样才能动态地做到这一点?我尝试过以下方法:

preg_replace(
    '#<a.*?>([^>]*)</a>#i',
    '<a href="/xsearch2?q=' . $key . '&page=$1">$1</a>',
    $pagination
);

但它也改变了超链接,只是想从超链接中删除最后一个斜杠

/
并添加
&page=

php hyperlink html-parsing preg-replace query-string
1个回答
0
投票

这个看似无害的任务涉及几个最佳实践。

  • 解析 HTML 时,使用合法的 DOM 解析工具(如
    DOMDocument
    )而不是正则表达式。
  • 解析 URL 时,请使用合法的 URL 解析工具(如
    parse_url()
    )而不是正则表达式。
  • 解析 URL 的查询字符串时,请使用合法的查询字符串解析工具(如
    parse_str()
    )而不是正则表达式
  • 为 URL 构建查询字符串(尤其是打印到 HTML 文档的查询字符串)时,请使用合法的查询字符串生成器工具(如
    http_build_query()
    )。
© www.soinside.com 2019 - 2024. All rights reserved.