【问题标题】:how can i strip word from a string in php我如何从php中的字符串中删除单词
【发布时间】:2015-08-25 21:46:58
【问题描述】:

我正在使用以下代码显示来自 sql 查询的前 5 个结果;

    <?php
    $query = "SELECT location, COUNT(location) AS qty FROM ecmt_memberlist GROUP BY location ORDER BY qty DESC LIMIT 0,5"; 

$result = mysql_query($query) or die(mysql_error());

while($row = mysql_fetch_array($result))
{
    echo "<span class='graphValue'>x".$row['qty']."</span> " .      $row['location'] . "<br />";

} ?>

这是显示我的结果字符串如下:

  • x46 Moon 20 - EVE 学院的姐妹们
  • x34 Moon 7 - Ammatar 舰队装配厂
  • x28 吉塔 x11 吉塔 IV - 月亮 4 - 加达里海军装配厂
  • x11 吉塔 IV - 月亮 4
  • x9 Lonetrek III - FUUUFAGOLAS

例如,我如何修剪 $row['location'] 以显示第一个“-”之前的单词;

  • x46 月亮 20
  • x34 月亮 7
  • x28 吉塔 x11 吉塔 IV
  • x11 吉塔四号
  • x9 Lonetrek III

【问题讨论】:

标签: php sql trim


【解决方案1】:

只需使用strstr() 并在针前打印,例如

strstr($row['location'], "-", TRUE);

【讨论】:

  • 如果结果的第一部分可能包含连字符,我建议将第二个参数更改为“ - ”(在两侧添加一个空格。
  • OP 可能希望使用 " -" 过滤掉空间,而不需要对 trim 进行其他函数调用 - 只是一个参考点。 ^^
  • 更健壮的解决方案可能是使用简单的正则表达式,例如preg_replace('/ - .*/', null, $row['location'])
【解决方案2】:

虽然您可以按照其他建议的方式使用 php,但我认为使用 mysql 会更好:

  $query = "SELECT SUBSTRING_INDEX(location,'-',1) as location, COUNT(location) AS qty FROM ecmt_memberlist GROUP BY location ORDER BY qty DESC LIMIT 0,5"; 

【讨论】:

    【解决方案3】:
    echo explode('-', $row['location'])[0];
    

    echo preg_replace('/\-\s.+/i', '', $row['location']);
    

    【讨论】:

    • preg_replace('/\-\s.+/i', '', $row['location']);工作得很好,当我使用 strstr() 时,它没有显示任何“x28 Jita x11 Jita IV - Moon 4 - Caldari Navy Assembly Plant”只是 x28。
    • 是的)你说得对)双“-”改变情况))删除它。
    【解决方案4】:
    $str='x46 Moon 20 - Sisters of EVE Academy';
    
    $str2=substr($str,0,strpos($str,' -'));
    
    echo $str2;
    

    【讨论】:

      【解决方案5】:

      有几种不同的方法可以做到这一点,一种是使用explode()

      $location = explode("-", $row['location']);
      

      然后用echo $location[0];调用“-”之前的所有内容,参见PHP Explode

      或者你可以使用strstr()

      $location = strstr($row['location'], '-', true);
      

      并仅使用$location 调用它,因为将第三个参数设置为 true 会返回第二个参数第一次出现之前的所有内容。见PHP strstr

      或者你可以使用split()

      $location = split("-", $row['location']);
      

      并使用$location[0] 调用它

      【讨论】:

        猜你喜欢
        • 2011-10-12
        • 2018-07-31
        • 2014-11-21
        • 2018-06-23
        • 2015-06-08
        • 2014-02-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多