移除特定符号及其之前的字符

11

我有一个字符串<?php $linktitle = get_the_title();?>,它存储了文章的标题。该字符串的标题如下:

如果您的Wi-Fi很差,请检查您的路由器-纽约时报

如何删除包括“–”在内的所有内容?我正在使用:<?php echo strstr($linktitle, '&#8211;'); ?>,并输出以下结果:

– 纽约时报


6
这个问题正在Meta上被讨论。 - kdbanman
array_pop(explode(' - ', $linktitle)) - caw
2个回答

13

尝试使用preg_replace函数:

preg_replace("/.+?( –)/", '', $linktitle)

如果您想要删除 - 后面的空格:

preg_replace("/.+?( –)\s*/", '', $linktitle)

这使用正则表达式来匹配一个由任何字符除了换行符1次或多次定义的模式 (.+),直到它遇到一个空格后跟着破折号 (( –)),然后是0个或多个空格 (\s*). preg_replace然后用一个空字符串替换匹配的模式。


$links = preg_replace("/.+?( –)/", '', $linktitle); 谢谢! - Gregory Schultz
使用正则表达式有点过头了。我建议使用Vishnu的答案。 - Talus

3

我希望您需要的输出结果是:

——《纽约时报》

从以下内容中得到:

如果你的Wi-Fi信号不好,检查一下你的路由器——《纽约时报》

因此,尝试使用它可能会有所帮助。

  $linktitle = "If Your Wi-Fi Is Terrible, Check Your Router – The New York Times";

  echo substr($linktitle,strrpos($linktitle,'–'));

编辑:

如果你也需要移除 "–" 。使用以下代码:

 $linktitle         = "If Your Wi-Fi Is Terrible, Check Your Router – The New York Times";
 $specCharLen   = strlen(htmlentities("–"));
 echo substr($linktitle,strrpos($linktitle,'–')+$specCharLen);

需要同时删除破折号。 - Gregory Schultz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接