Wordpress,删除特定字符前的所有内容

时间:2013-02-13 16:54:20

标签: php

我需要删除Wordpress Title

中特定字符之前的所有内容

我已经尝试了我在这里找到的不同代码,但我无法使其正常工作 我需要这样的东西

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

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

第一个代码只输出普通标题

在第二个我不知道如何运行PHP代码而不是普通字符。

更新

感谢harryg& amp; 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转换为en-dash,所以我添加了它

remove_filter( 'the_title', 'wptexturize' );

到我的funtions.php并且它有效。也许它可以帮助将来的某个人。谢谢你的所有答案!

3 个答案:

答案 0 :(得分: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实体作为分隔符。它还将在分隔符的第一个实例上修剪标题的开头。如果您多次出现分隔符,则需要根据标题的位置调整代码。

答案 1 :(得分: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中使用特殊字符,则必须逃避它们。

答案 2 :(得分:-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函数,您可以使用特定字符

将字符串分解为数组