我对使用preg_replace等非常陌生,所以请耐心等待。
我有几百行包含这行
<strong>[*<a title="*" name="*"></a>]</strong><br /> Lorem ipsum
*上面的代码表示数字,如1,2,3
我想要实现的是
*. Lorem Ipsum
Example, 1. Lorem ipsum, 2. Lorem ipsum
实现这一目标的最佳方式是什么?谢谢
示例文本
<strong>[1<a title="1" name="1"></a>]</strong><br /> Lorem ipsum 12345<br /> <strong>[2<a title="2" name="2"></a>]</strong><br /> lorem ipsum asdasd<br /> <strong>[3<a title="3" name="3"></a>]</strong><br /> lorem ipsum asdsadasdasdasd<br />
它可以达到数百
怎么样:
$output = preg_replace('~^<strong>'[('d+)<.*?<br's*/>~', '$1. ', $input);
解释:
~ : regex delimiter
^ : start of line
<strong> : <strong> as is
'[ : an open square bracket
('d+) : capture one or more digits
<.*? : > followed by any number of any char
<br's*/> : <br/> or <br />
~
并将所有匹配项替换为第一个捕获的组(即数字),后跟一个点和一个空格。
根据评论进行编辑:
$input = '<strong>[1<a title="1" name="1"></a>]</strong><br /> Lorem ipsum 12345<br /> <strong>[2<a title="2" name="2"></a>]</strong><br /> lorem ipsum asdasd<br /> <strong>[3<a title="3" name="3"></a>]</strong><br /> lorem ipsum asdsadasdasdasd<br />';
$output = preg_replace('~'s*<strong>'[('d+)<.*?<br's*/>(.*?)(?:<br />|$)~', "$1. $2'n", $input);
echo $output,"'n";
输出:
1. Lorem ipsum 12345
2. lorem ipsum asdasd
3. lorem ipsum asdsadasdasdasd
一种方法是使用preg_replace_callback()并创建一个函数来增加变量,并用该变量的当前值替换*
(尽管我认为您可能必须使用全局变量,这通常被认为是不好的做法)。
除此之外,我认为您必须迭代(即循环)。
$x=1;
$result = preg_replace_callback (
'%<strong(.*?)strong><br.?/>.?(.*?)'r'n%sim'
, create_function(
'$matches,$x',
'return $x++.$matches[1];'
), $input );
类似的东西