我需要删除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并且它有效。也许它可以帮助将来的某个人。谢谢你的所有答案!
答案 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函数,您可以使用特定字符
将字符串分解为数组