2010-11-23 57 views
1

行,所以我有这个PHP脚本:的preg_replace不工作:(

<?php 

$stringz = "Dan likes to eat pears and his favorite color is green!"; 
$patterns = array("/pears/","/green/"); 
$string = preg_replace($patterns, '<b>\\1</b>', $stringz); 
echo "<textarea rows='30' cols='100'>$string</textarea>"; 

?> 

,当我运行它,我得到这个: Dan likes to eat <b></b> and his favorite color is <b></b>!

是假设有一个字。 ..但它不...

回答

4

这是因为哟你没有明确地捕捉任何东西。 \\0抓住了整场比赛,当然,但为了捕捉特定部分,你需要的,如果你想使用\\1\\2\\3等发生变化$patterns这种使用捕获组:

$patterns = array("/(pears)/","/(green)/"); 

()“ s表示捕获组,并且其中捕获的任何值都存储在参考文献\\n中,其中\\n涉及第1个索引的捕获组。

+0

其实你总是在'\ 0`中捕捉整个事物,不管你是否有括号组。 – cambraca 2010-11-23 01:26:02

+0

对,我的意思是他没有*明确地捕捉任何东西。 :) – Alex 2010-11-23 01:27:07

0

如何

$patterns = array("/(pears)/","/(green)/"); 

\\1适用于某个主题,这是括号中的任何内容。