2013-06-30 51 views
0

嗯,我试图做一些非常简单的事情,但事实证明它非常复杂。
我有这个字符串,它是 -使用preg_replace不工作,因为我期望

后/ 6

再举例来说,我想取代它 -

后/浏览/ 6

所以我试图用以下模式替换它 -

/后/ [1-9-AZ]/

而替换模式 -

视图/ $ 0

但由于某些原因,所返回的字符串是这个字符串 -

/view/post/6

也许你们知道这个解决方案? 我非常感谢你的帮助。

回答

1

您可以使用 搜索模式

~post/([1-9-a-z])~ 

与置换方式

post/view/$1 
+0

谢谢。简单但仍帮助我。 – Yehonatan

1

这是意料之中的结果

$0表示已在你的情况下被匹配即post/6完整串

您可以使用环视

preg_replace('/(?<=post)(?=\/[\da-z])/',"/view",$txt); 

OR

preg_replace('/(post)(\/[\da-z])/',"$1/view$2",$txt); 
+0

谢谢你的回答,我无法理解你的代码,因为我在正则表达中不太好,但仍然,谢谢。 – Yehonatan

+0

@Yehonatan看到这[lookaround](http://www.regular-expressions.info/lookaround.html)和[组](http://www.regular-expressions.info/brackets.html) – Anirudha

2

你可以简单地使用str_replace()没有正则表达式是必需的:

echo str_replace('post/', 'post/view/', $str); 
+0

谢谢你的回答,但我也需要验证字符串,所以基本上我必须使用正则表达式 – Yehonatan

相关问题