【问题标题】:strstr php or alternative part stringstrstr php 或替代部分字符串
【发布时间】:2011-12-27 08:47:31
【问题描述】:

目前我正在使用 strstr() 获取字符串的第一部分。我的项目在 3 台服务器上运行。 1.开发服务器 2.测试服务器 3. 直播服务器

strstr() 在开发服务器和测试服务器上工作正常,但是当我将项目上线时,strstr 什么也没打印。例如:

我使用这个代码:

//$product["titel2"] = "apple - &#60fruit&#60";
 $product["titel2"]=(strstr($product["titel2"], "&#60domino"))?strstr($product["titel2"], "&#60fruit",true):$product["titel2"];
 $str_product_titel = stripText(!empty($product["titel"]) && preg_match("/^<!--/",stripText($product["titel"]))==0?$product["titel"]."":$product["titel2"]);

在第一台和第二台服务器上,我得到了这个: 苹果 在我的第三台服务器上,我什么也没有。

还有其他方法可以删除最后一部分,所以我只得到苹果吗? (我不想在“-”上这样做,因为有一个变化是我将有其他带有多个“-”的字符串。例如:apple - cake - <fruit<

(我知道fruit也写成:,但是用striptags,或者striptext就不行了)。

那么有人可以帮我解决这个烦人的小问题吗? 提前非常感谢您!

【问题讨论】:

  • 我认为“-”上的explode最好,可以返回数组中唯一的FIRST元素。
  • 把你的实现放在一边,你最初的需求到底是什么?

标签: php string strstr


【解决方案1】:

如您所见herestrstr($haystack, $needle, $before_needle) 的最后一个参数(您在第一个非注释行中使用它)仅在 PHP 5.3.0+ 中可用。在您的三个设置中检查您的 PHP 版本。

无论如何,你可以在旧的 PHP 版本中使用类似的东西来模拟它:

function my_strstr($haystack, $needle, $before_needle = false) {
    if (!$before_needle) return strstr($haystack, $needle);
    else return substr($haystack, 0, strpos($haystack, $needle));
}

【讨论】:

  • 这很完美!太感谢了。我想我永远也找不到解决办法。
  • 在使用不同版本的 PHP 时,您必须始终查看官方文档。自 PHP 5.2 和 5.3 以来添加了许多特性和函数参数,但并非所有托管服务都保持其服务器更新:)
猜你喜欢
  • 1970-01-01
  • 2013-06-19
  • 2012-07-17
  • 2017-07-14
  • 2013-09-22
  • 2016-02-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多