0

我需要删除 Wordpress 标题中特定字符之前的所有内容

我已经尝试过在这里找到的不同代码,但我无法让它工作我需要这样的东西

echo strstr(get_the_title(),"-",true);

或者

echo $str = 'get_the_title()';
$str = substr($str, 0, strpos($str, '-'));

第一个代码只是输出正常的标题

在第二个我不确定我如何可以运行 php 代码而不是普通字符。

更新:

感谢 harryg & jrod,我现在可以正常工作了

$str = get_the_title(); //This would be your post title (get_the_title)
$char =  " - "; //Define the separator
$strpos = strpos($str, $char); //Find out where it occurs
$str = substr($str, $strpos+strlen($char)); //Extract the substring after the separator
echo $str;

出于某种原因,wordpress 将我的 hpyhen 转换为破折号,所以我添加了它

remove_filter( 'the_title', 'wptexturize' );

到我的 funtions.php 并且它起作用了。也许它可以帮助将来的某人。感谢所有答案!

4

3 回答 3

0

这个应该做...

$str = "this comes before - this comes after"; //This would be your post title (get_the_title)
$char =  " - "; //Define the separator
$strpos = strpos($str, $char); //Find out where it occurs
$str = substr($str, $strpos+strlen($char)); //Extract the substring after the separator
echo $str; //Result will be "this comes after"

请记住,这$char需要与标题中出现的分隔符完全匹配。如果它是 html 编码的(例如—对于 em-dash),您将需要使用 html 实体作为分隔符。它还将在分隔符的第一个实例上修剪标题的开头。如果您多次出现分隔符,则需要根据它们在标题中出现的位置调整代码。

于 2013-02-13T17:10:43.330 回答
0

您也可以preg_replace为此使用:

$str = 'Lorem ipsum dolor sit amet - consetetur sadipscing elitr'; // your title
$sep =  ' - '; // separator
$short = preg_replace('/^(.*?)'.$sep.'(.*)$/si', '$2', $str, 1); // your short title
echo $short; // result: "consetetur sadipscing elitr"

这将替换第一次出现分隔符之前的所有字符。如果分隔符多次存在$str并且您想在最后一次出现分隔符之前替换所有内容,请使用:

$short = preg_replace('/^(.*)'.$sep.'(.*)$/si', '$2', $str, 1); // your short title

请记住,如果您在其中使用特殊字符,$sep则必须对其进行转义。

于 2013-02-13T18:03:06.240 回答
-1

$char="enter the character before which you want to delete the connect here";
$str =get_the_title(); $substr = explode($char,$str); echo $substr[1];

通过使用explode函数,您可以将字符串分解为具有特定字符的数组

于 2013-02-13T17:05:01.323 回答