相关疑难解决方法(0)

2071
推荐指数
28
解决办法
40万
查看次数

在HTML中搜索和替换单词

我正在努力做的是做一个'行话破坏者'.基本上我在数据库中有一些html和一些词汇表术语.当人们点击行话破坏者时,它会用一个漂亮的工具提示(wztooltip)替换文本中的单词,这些工具提示显示了它们的含义.

我一直在努力研究这个问题并且一直在认真研究这个问题 Regex/DOMDocument - 匹配并替换不在链接中的文本

似乎答案在于simple_html_dom库,但是我无法让它工作.显然,任何已经链接的单词都不会被触及.这是我所得到的内容.

$html = str_get_html($article['content']);

$query_glossary = "SELECT word,glossary_term_id,info FROM glossary_terms WHERE status = 1  ORDER BY LENGTH(word) DESC";
$result_glossary = mysql_query_run($query_glossary);

while($glossary = mysql_fetch_array($result_glossary)) {
    $glossary_link = SITEURL.'/glossary/term/'.string_to_url($glossary['word']).'-'.$glossary['glossary_term_id'];
    if(strlen($glossary['info'])>400) {
        $glossary_info = substr(strip_tags($glossary['info']),0,350).' ...<br /> <a href="'.$glossary_link.'">Read More</a>';
    }
    else {
        $glossary_info = $glossary['info'];
    }
    $glossary_tip = 'href="javascript:;" onmouseout="UnTip();" class="article_jargon_highligher" onmouseover="'.tooltip_javascript('<a href="'.$glossary_link.'">'.$glossary['word'].'</a>',$glossary_info,400,1,0,1).'"';
    $glossary_word = $glossary['word'];
    $glossary_word = preg_quote($glossary_word,'/');

    //once done we can replace the words with a nice tip    
    foreach ($html->find('text') as $element) {
        if …
Run Code Online (Sandbox Code Playgroud)

javascript php regex dom replace

22
推荐指数
2
解决办法
2170
查看次数

为什么DOM会改变编码?

$string = file_get_contents('http://example.com');

if ('UTF-8' === mb_detect_encoding($string)) {
    $dom = new DOMDocument();
    // hack to preserve UTF-8 characters
    $dom->loadHTML('<?xml encoding="UTF-8">' . $string);
    $dom->preserveWhiteSpace = false;
    $dom->encoding = 'UTF-8';
    $body = $dom->getElementsByTagName('body');
    echo htmlspecialchars($body->item(0)->nodeValue);
}
Run Code Online (Sandbox Code Playgroud)

这会将所有UTF-8字符更改为Å,¾,¤和其他垃圾.有没有其他方法如何保存UTF-8字符?

不要发布答案告诉我确保我输出它作为UTF-8,我确定我是.

提前致谢 :)

php dom utf-8

20
推荐指数
1
解决办法
2万
查看次数

如何替换HTML标记中的文本URL和排除URL?

我需要你帮忙.

我想转此:

sometext sometext http://www.somedomain.com/index.html sometext sometext
Run Code Online (Sandbox Code Playgroud)

成:

sometext sometext <a href="http://somedoamai.com/index.html">www.somedomain.com/index.html</a> sometext sometext
Run Code Online (Sandbox Code Playgroud)

我使用这个正则表达式管理它:

preg_replace("#((http|https|ftp)://(\S*?\.\S*?))(\s|\;|\)|\]|\[|\{|\}|,|\"|'|:|\<|$|\.\s)#ie", "'<a href=\"$1\" target=\"_blank\">$1</a>$4'", $text);
Run Code Online (Sandbox Code Playgroud)

问题是它还替换了imgURL,例如:

sometext sometext <img src="http//domain.com/image.jpg"> sometext sometext
Run Code Online (Sandbox Code Playgroud)

变成了:

sometext sometext <img src="<a href="http//domain.com/image.jpg">domain.com/image.jpg</a>"> sometext sometext
Run Code Online (Sandbox Code Playgroud)

请帮忙.

html php regex url

13
推荐指数
2
解决办法
5636
查看次数

在使用DOMDocument函数进行处理之前,在PHP中修复格式错误的XML

我需要将XML文档加载到来自外部源的PHP中.XML没有声明它的编码并包含非法字符&.如果我尝试直接在浏览器中加载XML文档,我会收到类似"在文本内容中找到无效字符"的错误,当在PHP中加载文件时,我会收到很多警告,例如:xmlParseEntityRef: no name in EntityInput is not proper UTF-8, indicate encoding ! Bytes: 0x9C 0x31 0x21 0x3C.

很明显,XML格式不正确,并且包含应转换为XML实体的非法字符.

这是因为XML提要由许多其他用户提供的数据组成,显然它在我获得之前没有经过验证或重新格式化.

我已经与XML feed的供应商交谈了,他们说他们正试图让内容提供商对其进行排序,但这看起来很愚蠢,因为他们应该首先验证输入.

我基本上需要修复XML纠正任何编码错误并将任何非法字符转换为XML实体,以便在使用PHP的DOMDocument函数时XML加载问题.

我的代码目前看起来像:

  $feedURL = '3704017_14022010_050004.xml';
  $dom = new DOMDocument();
  $dom->load($feedURL);
Run Code Online (Sandbox Code Playgroud)

示例编码问题的XML文件示例(单击下载):feed.xml

包含尚未转换为XML实体的字符的示例XML:

<?xml version="1.0"?>
<feed>
<RECORD>
<ID>117387</ID>
<ADVERTISERNAME>Test</ADVERTISERNAME>
<AID>10544740</AID>
<NAME>This & This</NAME>
<DESCRIPTION>For one day only this is > than this.</DESCRIPTION>
</RECORD>
</feed>
Run Code Online (Sandbox Code Playgroud)

php xml domdocument

8
推荐指数
2
解决办法
2万
查看次数

通过php dom,通过html片段中的超链接查找和替换关键字

我正在尝试使用simple_html_dom php类来创建查找和替换函数,该函数查找关键字并将其替换为关键字定义的链接,关键字为链接文本.

如何<a href="info.php?tag=dexia">Dexia</a> 使用这个类在一个字符串中找到并替换"Dexia" <div><p>The CEO of the Dexia bank has just decided to retire.</p></div>

html php replace

6
推荐指数
1
解决办法
1154
查看次数

preg_replace 只替换外部标签?(...我们不是在谈论完整的“html 解析”,只是一些 markdown)

应用突出显示某些文本(不包括偶尔标记“<...>”中的文本)的最简单方法是什么?

澄清:我希望保留现有标签!

$t = 
preg_replace(
  "/(markdown)/",
  "<strong>$1</strong>",
"This is essentially plain text apart from a few html tags generated with some
simplified markdown rules: <a href=markdown.html>[see here]</a>");
Run Code Online (Sandbox Code Playgroud)

应该显示为:

“除了使用一些简化的Markdown规则生成的一些 html 标签之外,这本质上是纯文本:请参见此处

...但不要弄乱锚标记内的文本(即<a href=markdown.html>)。

我听说过不使用正则表达式解析 html 的论点,但这里我们本质上讨论的是纯文本,除了一些 Markdown 代码的最小解析之外。

html php markup markdown preg-replace

6
推荐指数
1
解决办法
5196
查看次数

俄语的php问题

我使用curl以俄语填写utf-8页面.如果我回复文本它显示良好.然后我使用这样的代码

$dom = new domDocument; 

        /*** load the html into the object ***/ 
        @$dom->loadHTML($html); 

        /*** discard white space ***/ 
        $dom->preserveWhiteSpace = false; 

        /*** the table by its tag name ***/ 
        $tables = $dom->getElementsByTagName('table'); 

        /*** get all rows from the table ***/ 
        $rows = $tables->item(0)->getElementsByTagName('tr'); 

        /*** loop over the table rows ***/ 
        for ($i = 0; $i <= 5; $i++)
        { 
            /*** get each column by tag name ***/ 
            $cols = $rows->item($i)->getElementsByTagName('td'); 

            echo $cols->item(2)->nodeValue; 

            echo '<hr />'; 
        } 
Run Code Online (Sandbox Code Playgroud)

$ html包含俄语文本.在它行echo …

php encoding curl iconv domdocument

3
推荐指数
1
解决办法
5077
查看次数

我可以使用DOM回显W3C规范中的所有HTML标记吗?

我正在使用这个简单的PHP HTML解析器:http://simplehtmldom.sourceforge.net.是否可以使用它来回显HTML规范的所有标记?

php dom

2
推荐指数
1
解决办法
392
查看次数