【问题标题】:PHP Parsing URLPHP解析网址
【发布时间】:2011-04-05 02:18:45
【问题描述】:

好的,我正在尝试根据 url 从数据库中获取数据。

我有一个数据库,其中包含个别客户网站的一些公告数据。这些网站位于我网站上的各个目录中。 (即,www.domain.com/website1/index.html、www.domain.com/website2/index.html、www.domain.com/website3/index.html 等。)在数据库中我有一列具有每个客户的“归档名称”(又名目录名称 - website1、website2、website3 等)。我想尝试仅在数据库中显示字段“www.domain.com/website1/index.html”的filingName = website1 的行。希望这是有道理的。我基本上是想弄清楚如何在单个页面之间连接点,并且只提取特定的客户记录。有什么想法吗??

谢谢!

【问题讨论】:

  • 什么数据库?问题被标记为数据库

标签: php database parsing url


【解决方案1】:

最好的办法是将这些标识符单独存储在数据库中(例如 1= website1, 2 = website 2)并相应地命名目录。然后在您的 .htaccess 文件中,操作 URL 以使您的 $_GET 变量看起来像目录名称,将其替换为数据库中的匹配名称。使用 RewriteRule 规则执行此操作。这是在保持相同 URL 结构的同时实现此目的的最绝对方法。

编辑:哎呀,不知道这个帖子有多老了。

【讨论】:

    【解决方案2】:

    根据您的数据集有多大,预处理 URL 并存储您需要匹配的各个组件可能会“更便宜”。例如为主机/目录/查询字符串创建额外的字段并单独存储这些字段,而不是单一的绝对 URL。这比尝试进行子字符串匹配更安全,特别是如果您匹配的子字符串可能是多个不同 url 的一部分('abc' 是 'abc.com' 和 'abctv.com' 的一部分)。

    【讨论】:

      【解决方案3】:

      在查询中使用 like 语句:

      SELECT * FROM `sites` WHERE `url` LIKE "%/website1/%";
      

      【讨论】:

      • 另外,您可以使用 REGEXP,但我相信这样的查询会更昂贵。
      • 这样的查询几乎总是需要全表扫描,所以...这不适合在大中型项目中使用。
      猜你喜欢
      • 2012-09-03
      • 2010-11-17
      • 2020-10-21
      • 1970-01-01
      • 1970-01-01
      • 2015-12-24
      • 2022-01-16
      • 2015-12-18
      相关资源
      最近更新 更多