首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP:从排除/忽略URL的字符串中删除某些字符

PHP:从排除/忽略URL的字符串中删除某些字符
EN

Stack Overflow用户
提问于 2014-07-30 07:48:28
回答 4查看 103关注 0票数 1

我有一个字符串,如下所示

字符串

代码语言:javascript
复制
<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中删除

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-07-30 08:05:30

假设字符串总是采用这种格式,则可以将str_replace更改为更具体,从而忽略URL中的-

代码语言:javascript
复制
$newString = str_replace('> - <', '><', $oldString);

就像我说的,确保格式总是相同的,即> - <

票数 1
EN

Stack Overflow用户

发布于 2014-07-30 09:11:54

您可以使用DOMDocument,它将解析您的HTML。这意味着您只能在元素的内容上使用str_replace,而不是冒险修改它们的属性。

它看起来要长得多,但它也安全得多,如果你的HTML格式在未来略有变化,它仍然会继续工作:

代码语言:javascript
复制
$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();

输出:

代码语言:javascript
复制
<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>
票数 1
EN

Stack Overflow用户

发布于 2014-07-30 08:14:24

不是优雅,而是工作和通用的方法:

1)将-属性中的所有href替换为预定义的"word“--不包括-的字符组合。这可以由preg_replace_callback来完成。

2)用str_replace替换普通字符串

代码语言:javascript
复制
$result = str_replace('-', '', $source);

3)用-字符向后替换所有的“单词”。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25031411

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档