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

Php Wordpress,删除特定字符前的所有内容,php,Php,我需要删除Wordpress标题中特定字符之前的所有内容 我已经尝试了我在这里找到的不同代码,但我无法让它工作 我需要这样的东西 echo strstr(get_the_title(),"-",true); 或 第一个代码只输出普通标题 在第二个问题上,我不确定如何运行php代码而不是普通字符 更新: 多亏了harryg&jrod,我现在可以工作了 $str = get_the_title(); //This would be your post title (get_the_title) $

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

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

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

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

在第二个问题上,我不确定如何运行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转换为一个en破折号,所以我添加了它

remove_filter( 'the_title', 'wptexturize' );
到我的funtions.php,它成功了。也许这对将来的人有帮助。谢谢你的回答

$char=“输入要在其前面删除连接的字符”
$str=获取标题(); $substr=分解($char,$str); echo$substr[1]

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

这应该可以做到

$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破折号的
—
),则需要使用html实体作为分隔符。它还将在第一次使用分隔符时修剪标题的开头。如果分隔符多次出现,则需要根据它们在标题中出现的位置调整代码。

您也可以使用
preg\u 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
中使用特殊字符,则必须对其进行转义。

如果使用
strstr
则需要将第三个参数设置为
false
,以获取特定字符之后的所有内容。将其设置为
true
将返回针之前的所有内容(针除外)。在第二个例子中,你应该重复你的第二行而不是第一行,并去掉
get\u title
周围的引号。如需进一步帮助,请提供您正在使用的标题。
code
echo$str=get_the_title()$str=substr($str,0,strpos($str,–’);好的,这是可行的,但它只是输出正常的标题。标题总是不同的,只是里面总是有一个“-”。在“-”之前的所有内容都是我想要删除的,您从哪里运行此代码?模板文件?如果是,您确定模板文件正在运行吗?提供一个示例标题将允许像我这样的人测试您的代码并帮助调试它。如果我运行你的代码并得到不同的结果,你可能会遇到另一个问题。我在一个自定义的单点中运行代码。php我已经运行了一个类似的代码,并且工作正常
code
strtolower(preg_replace('/[^\p{L}]/u','',get_the_title());?>,在第二个例子中去掉那些撇号。撇号表示字符串。您希望调用函数,而不是引用其名称。这只输出字符并删除前后的所有内容。然后,请发送标题并发送要删除所有内容的字符]标题总是不同的,它总是包含“-”字符,并且“-”之前的所有内容都需要删除。这就是我如何获得标题的代码
code
get\u title()分解一个字符串只是为了修剪它不是一个好主意。而数组索引是基于零的,因此此代码无法按预期工作。输出也只是普通标题
code
$str=get_the_title()$char=“-”$strpos=strpos($str,$char)$str=substr($str,$strpos+strlen($char));它几乎接近,但只是去掉了“-”echo$str;?>仍然一样,它只是删除了2个字母。比如:普通标题:Hello-Hello转到:llo-Hellook我看到这是正常的字母,但首先我需要调用标题来获取它。标题总是不同的。如果是Wordpress Post标题,则需要定义
$str=get_Post_title()如我的评论中所述,它不起作用。输出是正常的标题
$str=get_the_title()$sep='-';//分隔符$short=preg_replace('/^(.*)'$sep.(.*)$/si'、'$2'、$str,1);回声$short您确定使用了正确的分隔符吗?确定是
?尝试
echo urlencode($str)。如果在分隔符的位置看到类似
+-+
的输出,则它应该可以工作。如果您看到类似于
++%E2%80%92+
的内容,您的分隔符是一个特殊的字符(破折号…)。您是对的,它从连字符转换为破折号。我已经在顶部编辑了文章并发布了工作解决方案。非常感谢
$short = preg_replace('/^(.*)'.$sep.'(.*)$/si', '$2', $str, 1); // your short title