我想从标题中删除一些文字(使用wordpress)。 示例:Alexandra Stan - Saxobeat先生 产出:Saxobeat先生
我尝试了很多代码,其中一项完美无缺:
$str = "this comes before – this comes after";
$char = " - ";
$strpos = strpos($str, $char);
$str = substr($str, $strpos+strlen($char));
echo $str;
但是经过多次尝试和上升...我在wordpress文章页面看到,当我在标题中键入“ - ”时,wordpress自动更改为:“ - ”谁与正常人不同(更大)一个“ - ”(用另一种字体复制,你会看到差异)。
我尝试将“ - ”替换为“ - ”,但输出为“ s之前 - 此后”
谢谢!
答案 0 :(得分:3)
这是你要替换的em dash。但是,你正在寻找一个常规的破折号。首先尝试通过这一堆代码运行字符串并阅读blog article我从
获取它修改强>
一个完整的工作示例,基本上粘贴了博客文章中的示例代码,并修复了substr
function scrub_bogus_chars(&$text) {
// First, replace UTF-8 characters.
$text = str_replace(
array("\xe2\x80\x98", "\xe2\x80\x99", "\xe2\x80\x9c", "\xe2\x80\x9d", "\xe2\x80\x93", "\xe2\x80\x94", "\xe2\x80\xa6"),
array("'", "'", '"', '"', '-', '--', '...'),
$text);
// Next, replace their Windows-1252 equivalents.
$text = str_replace(
array(chr(145), chr(146), chr(147), chr(148), chr(150), chr(151), chr(133)),
array("'", "'", '"', '"', '-', '--', '...'),
$text);
}
// Original string (with em dash)
$text = "this comes before – this comes after";
// Ensure regular dashes will be available
scrub_bogus_chars($text);
// Lastly, extract the interesting part of the original string
$char = ' - ';
$strpos = strpos($text, $char);
$text = substr($text, $strpos + strlen($char));
echo $text . PHP_EOL;
答案 1 :(得分:1)
你应该使用explode:
$str = "Alexandra Stan - Mr. Saxobeat ";
$char = " - ";
$str = explode($char, $str);
echo $str[1];
返回
先生。 Saxobeat
答案 2 :(得分:0)
这不是正常的短划线-
它是一个特殊的utf8字符–
。您需要在代码中使用特殊字符。使用explode()
:
$parts = explode(' – ', 'this comes before – this comes after');
echo $parts[1];
或preg_match()
:
preg_match('~\– (.*)~', 'this comes before – this comes after', $matches);
echo $matches[1];
答案 3 :(得分:0)
下面:
echo explode($char, $str)[1];