21,887
社区成员
发帖
与我相关
我的任务
分享
function keywords_autolink($content) {
$keywords=array(
'企业管理书籍' => '<a target="_blank" title="企业管理书籍" href="http://www.12reads.cn/">企业管理书籍</a>',
'管理学书籍' => '<a target="_blank" title="管理学书籍" href="http://www.12reads.cn/">管理学书籍</a>',
'管理书籍' => '<a target="_blank" title="管理书籍" href="http://www.12reads.cn/">管理书籍</a>',
'管理类书籍' => '<a target="_blank" title="管理类书籍" href="http://www.12reads.cn/">管理类书籍</a>',
'市场营销' => '<a target="_blank" title="市场营销" href="http://www.12reads.cn/category/marketing">市场营销</a>',
'职场' => '<a target="_blank" title="职场" href="http://www.12reads.cn/category/career">职场</a>'
);
//关键词部分
$keys=array_keys($keywords);
foreach ($keys as $k) {
$pos=strpos($content, $k);
if ($pos !== false) {
// Nothing found
$length=strlen($k);
$content=substr_replace($content, $keywords[$k], $pos, $length);
//$content是文章内容,$keywords[$k]需要替换成的内容,$pos替换开始的位置,$length数出要从开始的位置算起要替换的词有多长。
unset($k);//最后销毁一下哦。
}
}
//标签部分
$tags = get_tags();
foreach ($tags as $key){
$name= $key->name;//取出所有标签名称
$tag_link = get_tag_link($key->term_id);//取出标签链接
$replacement="<a target='_blank' title='{$key->name}' href='{$tag_link}'>{$key->name}</a>";
$pos=strpos($content, $name);
if ($pos !== false) {
$length=strlen($name);
//从标签开始出现的位置按照其字符长度开始替换,因此结果是只替换一次。
$content=substr_replace($content, $replacement, $pos, $length);
unset($key);//最后销毁一下哦。
}
}
return $content;
}
add_filter('the_content', 'keywords_autolink');
$a = [1,2,3];
for($i=0; $i<256; $i++) {
echo "\n$i ";
print_r(preg_grep('/' . preg_quote(chr($i)) . '/', $a));
}
0 Array
(
)
1 Array
(
)
2 Array
(
)
3 Array
(
)
4 Array
(
)
5 Array
(
)
6 Array
(
)
7 Array
(
)
8 Array
(
)
9 Array
(
)
10 Array
(
)
11 Array
(
)
12 Array
(
)
13 Array
(
)
14 Array
(
)
15 Array
(
)
16 Array
(
)
17 Array
(
)
18 Array
(
)
19 Array
(
)
20 Array
(
)
21 Array
(
)
22 Array
(
)
23 Array
(
)
24 Array
(
)
25 Array
(
)
26 Array
(
)
27 Array
(
)
28 Array
(
)
29 Array
(
)
30 Array
(
)
31 Array
(
)
32 Array
(
)
33 Array
(
)
34 Array
(
)
35 Array
(
)
36 Array
(
)
37 Array
(
)
38 Array
(
)
39 Array
(
)
40 Array
(
)
41 Array
(
)
42 Array
(
)
43 Array
(
)
44 Array
(
)
45 Array
(
)
46 Array
(
)
47 <br />
<b>Warning</b>: preg_grep(): Unknown modifier '/' in <b>D:\AMP\web\ide_tmp.php</b> on line <b>6</b><br />
48 Array
(
)
49 Array
(
[0] => 1
)
50 Array
(
[1] => 2
)
51 Array
(
[2] => 3
)
52 Array
(
)
53 Array
(
)
54 Array
(
)
55 Array
(
)
56 Array
(
)
57 Array
(
)
58 Array
(
)
59 Array
(
)
60 Array
(
)
61 Array
(
)
62 Array
(
)
63 Array
(
)
64 Array
(
)
65 Array
(
)
66 Array
(
)
67 Array
(
)
68 Array
(
)
69 Array
(
)
70 Array
(
)
71 Array
(
)
72 Array
(
)
73 Array
(
)
74 Array
(
)
75 Array
(
)
76 Array
(
)
77 Array
(
)
78 Array
(
)
79 Array
(
)
80 Array
(
)
81 Array
(
)
82 Array
(
)
83 Array
(
)
84 Array
(
)
85 Array
(
)
86 Array
(
)
87 Array
(
)
88 Array
(
)
89 Array
(
)
90 Array
(
)
91 Array
(
)
92 Array
(
)
93 Array
(
)
94 Array
(
)
95 Array
(
)
96 Array
(
)
97 Array
(
)
98 Array
(
)
99 Array
(
)
100 Array
(
)
101 Array
(
)
102 Array
(
)
103 Array
(
)
104 Array
(
)
105 Array
(
)
106 Array
(
)
107 Array
(
)
108 Array
(
)
109 Array
(
)
110 Array
(
)
111 Array
(
)
112 Array
(
)
113 Array
(
)
114 Array
(
)
115 Array
(
)
116 Array
(
)
117 Array
(
)
118 Array
(
)
119 Array
(
)
120 Array
(
)
121 Array
(
)
122 Array
(
)
123 Array
(
)
124 Array
(
)
125 Array
(
)
126 Array
(
)
127 Array
(
)
128 Array
(
)
129 Array
(
)
130 Array
(
)
131 Array
(
)
132 Array
(
)
133 Array
(
)
134 Array
(
)
135 Array
(
)
136 Array
(
)
137 Array
(
)
138 Array
(
)
139 Array
(
)
140 Array
(
)
141 Array
(
)
142 Array
(
)
143 Array
(
)
144 Array
(
)
145 Array
(
)
146 Array
(
)
147 Array
(
)
148 Array
(
)
149 Array
(
)
150 Array
(
)
151 Array
(
)
152 Array
(
)
153 Array
(
)
154 Array
(
)
155 Array
(
)
156 Array
(
)
157 Array
(
)
158 Array
(
)
159 Array
(
)
160 Array
(
)
161 Array
(
)
162 Array
(
)
163 Array
(
)
164 Array
(
)
165 Array
(
)
166 Array
(
)
167 Array
(
)
168 Array
(
)
169 Array
(
)
170 Array
(
)
171 Array
(
)
172 Array
(
)
173 Array
(
)
174 Array
(
)
175 Array
(
)
176 Array
(
)
177 Array
(
)
178 Array
(
)
179 Array
(
)
180 Array
(
)
181 Array
(
)
182 Array
(
)
183 Array
(
)
184 Array
(
)
185 Array
(
)
186 Array
(
)
187 Array
(
)
188 Array
(
)
189 Array
(
)
190 Array
(
)
191 Array
(
)
192 Array
(
)
193 Array
(
)
194 Array
(
)
195 Array
(
)
196 Array
(
)
197 Array
(
)
198 Array
(
)
199 Array
(
)
200 Array
(
)
201 Array
(
)
202 Array
(
)
203 Array
(
)
204 Array
(
)
205 Array
(
)
206 Array
(
)
207 Array
(
)
208 Array
(
)
209 Array
(
)
210 Array
(
)
211 Array
(
)
212 Array
(
)
213 Array
(
)
214 Array
(
)
215 Array
(
)
216 Array
(
)
217 Array
(
)
218 Array
(
)
219 Array
(
)
220 Array
(
)
221 Array
(
)
222 Array
(
)
223 Array
(
)
224 Array
(
)
225 Array
(
)
226 Array
(
)
227 Array
(
)
228 Array
(
)
229 Array
(
)
230 Array
(
)
231 Array
(
)
232 Array
(
)
233 Array
(
)
234 Array
(
)
235 Array
(
)
236 Array
(
)
237 Array
(
)
238 Array
(
)
239 Array
(
)
240 Array
(
)
241 Array
(
)
242 Array
(
)
243 Array
(
)
244 Array
(
)
245 Array
(
)
246 Array
(
)
247 Array
(
)
248 Array
(
)
249 Array
(
)
250 Array
(
)
251 Array
(
)
252 Array
(
)
253 Array
(
)
254 Array
(
)
255 Array
(
)
根本不会出现 WARNINGadd_filter('the_content', 'keywords_autolink');
function keywords_autolink($content) {
$s =<<< TXT
企业管理书籍企业管理管理学书籍管理书籍管理类书籍市场营销职场
企业管理书籍企业管理管理学书籍管理书籍管理类书籍市场营销职场
TXT;
$k = array(
'企业管理书籍' => '<a target="_blank" title="%s" href="http://www.12reads.cn/">%s</a>',
'企业管理' => '<a target="_blank" title="%s" href="http://www.12reads.cn/">%s</a>',
'管理学书籍' => '<a target="_blank" title="%s" href="http://www.12reads.cn/">%s</a>',
'管理书籍' => '<a target="_blank" title="%s" href="http://www.12reads.cn/">%s</a>',
'管理类书籍' => '<a target="_blank" title="%s" href="http://www.12reads.cn/">%s</a>',
'市场营销' => '<a target="_blank" title="%s" href="http://www.12reads.cn/category/marketing">%s</a>',
'职场' => '<a target="_blank" title="%s" href="http://www.12reads.cn/category/career">%s</a>'
);
$charset = mb_check_encoding($content, 'utf-8') ? 'utf-8' : 'gbk';
mb_internal_encoding($charset);
$d = array_keys($k);
$t = '';
$r = '';
$p = array();
for($i=0; $i<mb_strlen($content); $i++) {
$c = mb_substr($content, $i, 1);
if(preg_grep('/' . preg_quote($t . $c) . '/', $d)) {
$t .= $c;
continue;
}
if(isset($k[$t])){
if(! in_array($t, $p)) {
$p[] = $t;
$t = sprintf($k[$t], $t, $t);
}
}
$r .= $t;
$t = $c;
}
//标签部分
$tags = get_tags();
foreach ($tags as $key){
$name= $key->name;//取出所有标签名称
$tag_link = get_tag_link($key->term_id);//取出标签链接
$replacement="<a target='_blank' title='{$key->name}' href='{$tag_link}'>{$key->name}</a>";
$pos=strpos($content, $name);
if ($pos !== false) {
$length=strlen($name);
//从标签开始出现的位置按照其字符长度开始替换,因此结果是只替换一次。
$content=substr_replace($content, $replacement, $pos, $length);
unset($key);//最后销毁一下哦。
}
}
return $content;
}
用不了汗,只替换了标签没有替换关键词。preg_grep('/' . preg_quote($t . $c) . '/', $d)
add_filter('the_content', 'keywords_autolink');
function keywords_autolink($content) {
$s =<<< TXT
企业管理书籍企业管理管理学书籍管理书籍管理类书籍市场营销职场
企业管理书籍企业管理管理学书籍管理书籍管理类书籍市场营销职场
TXT;
$k = array(
'企业管理书籍' => '<a target="_blank" title="%s" href="http://www.12reads.cn/">%s</a>',
'企业管理' => '<a target="_blank" title="%s" href="http://www.12reads.cn/">%s</a>',
'管理学书籍' => '<a target="_blank" title="%s" href="http://www.12reads.cn/">%s</a>',
'管理书籍' => '<a target="_blank" title="%s" href="http://www.12reads.cn/">%s</a>',
'管理类书籍' => '<a target="_blank" title="%s" href="http://www.12reads.cn/">%s</a>',
'市场营销' => '<a target="_blank" title="%s" href="http://www.12reads.cn/category/marketing">%s</a>',
'职场' => '<a target="_blank" title="%s" href="http://www.12reads.cn/category/career">%s</a>'
);
$charset = mb_check_encoding($s, 'utf-8') ? 'utf-8' : 'gbk';
mb_internal_encoding($charset);
$d = array_keys($k);
$t = '';
$r = '';
$p = array();
for($i=0; $i<mb_strlen($s); $i++) {
$c = mb_substr($s, $i, 1);
if(preg_grep('/' . $t . $c . '/', $d)) {
$t .= $c;
continue;
}
if(isset($k[$t])){
if(! in_array($t, $p)) {
$p[] = $t;
$t = sprintf($k[$t], $t, $t);
}
}
$r .= $t;
$t = $c;
}
//标签部分
$tags = get_tags();
foreach ($tags as $key){
$name= $key->name;//取出所有标签名称
$tag_link = get_tag_link($key->term_id);//取出标签链接
$replacement="<a target='_blank' title='{$key->name}' href='{$tag_link}'>{$key->name}</a>";
$pos=strpos($content, $name);
if ($pos !== false) {
$length=strlen($name);
//从标签开始出现的位置按照其字符长度开始替换,因此结果是只替换一次。
$content=substr_replace($content, $replacement, $pos, $length);
unset($key);//最后销毁一下哦。
}
}
return $content;
}
这样只有标签部分被替换了,上面的关键词部分没反应。我原来那个都可以替换,只是当关键词包含标签时会重复替换。谢谢。$s =<<< TXT
企业管理书籍企业管理管理学书籍管理书籍管理类书籍市场营销职场
企业管理书籍企业管理管理学书籍管理书籍管理类书籍市场营销职场
TXT;
$k = array(
'企业管理书籍' => '<a target="_blank" title="%s" href="http://www.12reads.cn/">%s</a>',
'企业管理' => '<a target="_blank" title="%s" href="http://www.12reads.cn/">%s</a>',
'管理学书籍' => '<a target="_blank" title="%s" href="http://www.12reads.cn/">%s</a>',
'管理书籍' => '<a target="_blank" title="%s" href="http://www.12reads.cn/">%s</a>',
'管理类书籍' => '<a target="_blank" title="%s" href="http://www.12reads.cn/">%s</a>',
'市场营销' => '<a target="_blank" title="%s" href="http://www.12reads.cn/category/marketing">%s</a>',
'职场' => '<a target="_blank" title="%s" href="http://www.12reads.cn/category/career">%s</a>'
);
$charset = mb_check_encoding($s, 'utf-8') ? 'utf-8' : 'gbk';
mb_internal_encoding($charset);
$d = array_keys($k);
$t = '';
$r = '';
$p = array();
for($i=0; $i<mb_strlen($s); $i++) {
$c = mb_substr($s, $i, 1);
if(preg_grep('/' . $t . $c . '/', $d)) {
$t .= $c;
continue;
}
if(isset($k[$t])){
if(! in_array($t, $p)) {
$p[] = $t;
$t = sprintf($k[$t], $t, $t);
}
}
$r .= $t;
$t = $c;
}
echo $r;
<a target="_blank" title="企业管理书籍" href="http://www.12reads.cn/">企业管理书籍</a><a target="_blank" title="企业管理" href="http://www.12reads.cn/">企业管理</a><a target="_blank" title="管理学书籍" href="http://www.12reads.cn/">管理学书籍</a><a target="_blank" title="管理书籍" href="http://www.12reads.cn/">管理书籍</a><a target="_blank" title="管理类书籍" href="http://www.12reads.cn/">管理类书籍</a><a target="_blank" title="市场营销" href="http://www.12reads.cn/category/marketing">市场营销</a><a target="_blank" title="职场" href="http://www.12reads.cn/category/career">职场</a>
企业管理书籍企业管理管理学书籍管理书籍管理类书籍市场营销职场