我有一个字符串,如下所示
字符串
<span class="post-excerpt"> - <a href="./posts/the-post-title">17 posts</a> - Li Europan lingues es membres del sam familie. Lor separat existentie es un myth. Por scientie, musica, sport etc, litot Europa usa li sam vocabular. Li lingues differe solmen in li grammatica, li pronunciation e li plu commun vocabules. Omnicos directe al desirabilite de un nov lingua franca: On refusa continuar payar custosi traductores. At solmen va esser necessi far uniform grammatica, pronunc</span>
现在我要从字符串 中删除-
(不是从字符串中的网址中删除)
我尝试使用str_replace()
但是它也从URL中删除了,当然也会导致链接断开。
任何人都可以帮我从字符串中删除-
,但不从网址中删除
答案 0 :(得分:1)
假设字符串将始终采用该格式,您可以将str_replace更改为更具体,从而忽略URL中的-
:
$newString = str_replace('> - <', '><', $oldString);
就像我说的那样,确保格式始终相同,即> - <
答案 1 :(得分:1)
您可以使用DOMDocument来解析您的HTML。这意味着您只能对元素的内容使用str_replace,而不是冒险修改其属性。
它看起来更加冗长,但它也更安全,如果您的HTML格式在未来略有变化,它仍将继续有效:
$html = '<span class="post-excerpt"> - <a href="./posts/the-post-title">17 posts</a> - Li Europan lingues es membres del sam familie. Lor separat existentie es un myth. Por scientie, musica, sport etc, litot Europa usa li sam vocabular. Li lingues differe solmen in li grammatica, li pronunciation e li plu commun vocabules. Omnicos directe al desirabilite de un nov lingua franca: On refusa continuar payar custosi traductores. At solmen va esser necessi far uniform grammatica, pronunc</span>';
$doc = new DOMDocument();
$doc->loadHTML($html);
// DOMDocument creates a valid HTML document, adding a doctype, <html> and <body> tags
// The following two lines remove them
// http://stackoverflow.com/a/6953808/2088135
$doc->removeChild($doc->firstChild);
$doc->replaceChild($doc->firstChild->firstChild->firstChild, $doc->firstChild);
$span = $doc->getElementsByTagName('span')->item(0);
foreach ($span->childNodes as $node) {
$node->nodeValue = str_replace(' - ', '', $node->nodeValue);
}
echo $doc->saveHTML();
输出:
<span class="post-excerpt"><a href="./posts/the-post-title">17 posts</a>Li Europan lingues es membres del sam familie. Lor separat existentie es un myth. Por scientie, musica, sport etc, litot Europa usa li sam vocabular. Li lingues differe solmen in li grammatica, li pronunciation e li plu commun vocabules. Omnicos directe al desirabilite de un nov lingua franca: On refusa continuar payar custosi traductores. At solmen va esser necessi far uniform grammatica, pronunc</span>
答案 2 :(得分:0)
不优雅,但是工作和普遍的方法:
1)将-
属性中的所有href
替换为一些预定义的&#34; word&#34; - 不包括-
的字符组合。这可以通过preg_replace_callback
完成。
2)用str_replace
替换普通字符串:
$result = str_replace('-', '', $source);
3)向后替换所有&#34; word&#34;出现-
个字符。
答案 3 :(得分:-4)
$newString = str_replace('> - <', '><', $oldString);