PHP删除可变字符串长度


PHP remove variable string length

我从数据库中获取一个字符串。字符串可以是这样的。。。。

Homeland-Homeland的决赛将有一些悬而未决的问题

《权力的游戏》-明星杰克·格里森在系列后退出演出

我想删除每个字符串中包含-的标题。我查看了str_replace(),但我只能更改一些字符或删除前x个或最后x个字符。但这在任何规则中都是不同的。

有人能给我指正确的方向吗?

试试这个:

$title = explode('-', $title, 2);
$title = trim($title[1]);

首先,你把标题分成两部分,然后只保留最后一部分,去掉所有多余的空白。

如果你至少有PHP 5.4,你可以做

$title = trim(explode('-', $title, 2)[1]);
$title= explode(" - ", $string)[1];

您可以为此使用regex(特别是,您可以使用preg_replace):

$episode = preg_replace('/.*?'s+-'s+/', '', $episode);

Regex尸检:

  • .*?是一个懒惰的匹配。尽可能少地比赛,直到其他比赛匹配为止
  • 's+匹配1次或多次的空白字符
  • -一个文字-字符
  • 's+匹配1次或多次的空白字符

试试这个:

$str='Homeland - Some Loose Ends Will Be Tied Up in Homeland''s Finale';
$str = preg_replace('/(^[^-]*- ?)+/', '', $str);
echo( $str );

解释

$str包含完整的字符串,preg_replace所做的是使用传递的REGEX /(^[^-]*- ?)+/替换匹配字符串,并替换为空字符串''

REGEX /(^[^-]*- ?)+/表示:

字符串开始的任何字符,它重复了多少次,直到破折号"-"用空字符串替换所有这些