在字符串中查找数字并围绕每个数字换行

时间:2014-08-09 11:48:37

标签: php regex preg-replace

我的文本是目录:

004 Foreword
007 Introduction
008 Chapter 1
012 Chapter 2
130 Chapter 3
274 Chapter 4
…

我需要的是找到页码,然后将每个号码换成span

<span class="page-number">004</span> Foreword
<span class="page-number">007</span> Introduction
<span class="page-number">008</span> Chapter 1
<span class="page-number">012</span> Chapter 2
<span class="page-number">130</span> Chapter 3
<span class="page-number">274</span> Chapter 4
…

数字可以包含1到3位数字。

3 个答案:

答案 0 :(得分:2)

你走了:

<?
    $text = <<<TEXT
004 Foreword
007 Introduction
008 Chapter 1
012 Chapter 2
130 Chapter 3
274 Chapter 4
TEXT;

    echo preg_replace('/^(\d+)/m', '<span class="page-number">$1</span>', $text);
?>

答案 1 :(得分:1)

由于它是一个内容表,我假设您要查找的数字是该行的第一个数字。

$re = '~^\D*\K\d{1,3}~m'; 

$subst = '<span class="page-number">$0</span>'; 

$result = preg_replace($re, $subst, $str); 

细节:

^表示行的开头,因为使用了m修饰符

\D任何不是数字的字符

\K从匹配结果中删除模式左侧匹配的所有内容

答案 2 :(得分:0)

试用此代码测试here

<?php

$text = 'TEXT
004 Foreword
007 Introduction
008 Chapter 1
012 Chapter 2
130 Chapter 3
274 Chapter 4
';

$text = preg_replace('/[\d]{3}/m', '<span class="page-number">$0</span>', $text);
echo $text;