【问题标题】:removing unneeded query from generated url string in php从 php 中生成的 url 字符串中删除不需要的查询
【发布时间】:2012-05-01 19:39:59
【问题描述】:

我有以下字符串为我网站上的音乐播放器生成 mp3 网址。

<?php echo $song->getTitle() ?>

导致 /public/music_song/df/74/746b_2112.mp3?c=ec1e

我想从字符串中删除查询 导致 /public/music_song/df/74/746b_2112.mp3

我已经研究过如何拆分 url,但我还远不是一个 php 天才,所以我不知道拆分或使用 preg_replace 的天气,也不知道如何将它合并到我现有的字符串中。

我必须摆脱这些查询,它们是不必要的,并且每天都会使我的数据库崩溃。

【问题讨论】:

  • 如果这样的事情让你的数据库崩溃,那你的问题就更大了!
  • 很抱歉,查询本身并没有使数据库本身崩溃,但它们或多或少会导致服务器负载过高。我目前正在运行 AMD x8、1tb、raid 1、16 核 @2.0ghz。我刚刚优化了表格并将负载从 3.1 提高到了 1.5。所以情况正在好转。谢谢提伯尔

标签: php split


【解决方案1】:
list($keep) = explode('?', '/public/music_song/df/74/746b_2112.mp3?c=ec1e');

【讨论】:

  • 感谢您的帮助,我才意识到我提供了错误的信息。我正在使用 "htmlLink($song->getFilePath(), $this->string()->truncate($song->getTitle(), 50), array( 'class' = > 'music_player_tracks_url', 'type' => 'audio', 'rel' => $song->song_id )) ?>" 并且需要将explode应用于生成我的url的字符串,即“$this->htmlLink( $song->getFilePath()".
  • 猜测您需要将$song-&gt;getFilePath() 放在explode() 函数中才能正常工作。
  • 对不起,我自称是新手。我还在学习。
  • 是的,乔恩,这正是我所需要的。
  • 不幸的是$song-&gt;getFilePath() 不能自己获取 url,它必须有$this-&gt;htmlLink($song-&gt;getFilePath()。如果你能指出我正确的方向,那将是一个巨大的帮助。
【解决方案2】:
$parsedInput = parse_url('/public/music_song/df/74/746b_2112.mp3?c=ec1e');
echo $parsedInput['path'];
// Results in /public/music_song/df/74/746b_2112.mp3

编辑:由于我没有使用 SocialEngine,我猜你需要做的是:

<?php $parsed = parse_url($song->getFilePath());
      echo $this->htmlLink($parsed['path'], 
                           $this->string()->truncate($song->getTitle(), 50), 
                           array('class' => 'music_player_tracks_url', 
                                 'type' => 'audio', 
                                 'rel' => $song->song_id )); ?>

【讨论】:

  • 谢谢普拉特!我会试试这个解决方案
  • 普拉特,你介意帮我重写我的函数吗...我已经尝试了几次,但一直出错。这是我现在使用的代码。 &lt;?php echo $this-&gt;htmlLink($song-&gt;getFilePath(), $this-&gt;string()-&gt;truncate($song-&gt;getTitle(), 50), array( 'class' =&gt; 'music_player_tracks_url', 'type' =&gt; 'audio', 'rel' =&gt; $song-&gt;song_id )) ?&gt;
  • 普拉特,感谢您的帮助!您的解决方案非常有效!先生,您是一位绅士和一位学者。非常感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-02-02
  • 1970-01-01
  • 2017-06-01
  • 2011-12-24
相关资源
最近更新 更多