Preg_replace 和正则表达式

Preg_replace and regex

我有这样的字符串:

$imgs = "uploads/images/adsense.png|uploads/images/tree-7835_960_720.jpg|uploads/images/way-427984_960_720.jpg|uploads/images/friendship-1081843_960_720.jpg|uploads/images/pinky-swear-329329_960_720.jpg"

我只想要引用第一张图片的部分:

uploads/imagens/adsense.png

如何使用正则表达式过滤第一个 | 之前的内容?

$image = preg_replace(/(*)(\/*)/,  ,$imgs)

由于您添加了 regex 标签。

您可以像下面那样使用 positive lookahead 以及 ^ 锚点。

正则表达式: ^.*?(?=\|)

Regex101 Demo

/^([^|]*)/

这匹配从字符串开头到第一个 | 个字符的任意数量的字符。

为什么要使用正则表达式?你可以这样做:

substr($imgs, 0, strpos($imgs, '|'));

当您有这样的输入值时:

$imgs = "uploads/images/adsense.png|uploads/images/tree-7835_960_720.jpg|uploads/images/way-427984_960_720.jpg|uploads/images/friendship-1081843_960_720.jpg|uploads/images/pinky-swear-329329_960_720.jpg"

您只需 explode 它,使用 | 作为分隔符:

$images = explode("|", $imgs);

你要的图片是第一个:

$images[0];

虽然您可以使用正则表达式,但在这种情况下没有特别的理由,而且它有混淆您正在做的事情的风险。

使用

$upload = explode('|', $imgs);
echo $upload[0];

希望对您有所帮助:)