PHP正则表达式替换站点关键字链接后空白的解决方法,正则表达式关键字
标题这样不知道合适不合适。具体的情况是这样的:网站要增加关键字链接功能,然后需要对文章的内容进行正则表达式匹配并替换,然后使用了preg_replace函数。替换的程序代码如下:
function ReplaceKeyword($linkDefs,$content){ $linkMap = array(); /*foreach($linkDefs as $row) { $linkMap[] = explode(',', $row); }*/ $linkMap = $linkDefs; //把原有的链接替换成文字 foreach($linkMap as $row) { $content = preg_replace('/(<a.*?>\s*)('.$row[0].')(\s*<\/a>)/sui', $row[0], $content); } //关键字从长至短排序 usort($linkMap, '_sortDesc'); //var_dump($linkMap); $tmpKwds = array(); //存放暂时被替换的子关键字 $k_count=0; foreach($linkMap as $i=>$row) { list($kwd, $url) = $row; for($j=$i+1; $j<count($linkMap); $j++) { $subKwd = $linkMap[$j][0]; //如果包含其他关键字,暂时替换成其他字符串,如 茶叶 变成 if(strpos($kwd, $subKwd) !== false) { $tmpKwd = ''; $kwd = str_replace($subKwd, $tmpKwd, $kwd); $tmpKwds[$tmpKwd] = $subKwd; } } //把文字替换成链接 require(MLEINC.'/config/globals.config.php'); $th_num = $config['keyword_num']; //关键字替换次数 $content = preg_replace('/('.$row[0].')/sui', '<a href="'.$row[1].'">'.$kwd.'</a>', $content, $th_num ,$count); // 所有的匹配项都会被替换 $k_count+=$count; } //把代替子关键字的字符串替换回来 foreach($tmpKwds as $tmp=>$kwd) { $content = str_replace($tmp, $kwd, $content); } $result = array($content,$k_count); return $result; unset($result); unset($tmp); unset($tmpKwds); unset($kwd); unset($count); unset($config); unset($linkMap); unset($linkDefs); unset($tmpKwd); unset($content); unset($th_num); unset($row); unset($k_count); }
程序是从网上找的,然后在本地测试是正常的,本地环境为php 5.3 服务是5.2的,上传到网上去后,提交则显示空白,一开始考虑是PHP版本问题,以为是ereg preg的区别,替换后还是不行。后来网上看,发现有网友说调整大pcre.backtrack_limit和pcre.recursion_limit就行,我试了下,果然可以了。看来是配置问题,不过一般情况下,PHP的默认配置应该没啥问题,我自己写的这程序还是不够好!
我这样写都可以啊,用IE6,FIREFOX 3.0 都试过了,没问题。
#47;/W3C//DTD HTML 4.0 Transitional//EN">
Xhtml Linux

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章
Windows 11 KB5054979中的新功能以及如何解決更新問題
4 週前ByDDD
如何修復KB5055523無法在Windows 11中安裝?
3 週前ByDDD
Inzoi:如何申請學校和大學
1 個月前ByDDD
如何修復KB5055518無法在Windows 10中安裝?
3 週前ByDDD
在哪裡可以找到Atomfall中的站點辦公室鑰匙
4 週前ByDDD

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

SublimeText3漢化版
中文版,非常好用

Dreamweaver Mac版
視覺化網頁開發工具