PHP正则表达式查找模式但只替换一个字符

时间:2012-10-19 20:46:41

标签: php regex

我正在使用xpdf pdf2text将PDF转换为文本,除了一件事情之外,它的效果很好:它将段落符号(¶)转换为数字8.我需要找到一种方法来使用以下模式获取所有内容:

preg_match_all('/\b8\d{1,2}-/', 'text');

但只替换该模式中的“8”。我已经尝试将匹配保存到数组中,但是如何将它们重新插入到它们所属的文本中?

理想情况下,段落标记只能正确转换,但我尝试了几种不同的编码但没有成功;我认为一些pdf有嵌入字体。

关于如何在该模式中仅替换“8”的任何想法?我不能只替换所有8个,因为被引用的文章的页面或章节可能是8;但是段落没有80-something的危险(这就是为什么我在8之后检查一个数字)。

感谢。

1 个答案:

答案 0 :(得分:5)

捕获组中剩余的模式并将其放回原位:

$str = preg_replace('/\b8(\d{1,2}-)/', 'replacement$1', $str);