我的某些文字以[br]
标记结尾,可选地后跟更多[br]
标记和/或空格字符,但没有别的。例如:
bla blah d [br] fkjd fkdh fkd fks
sdkf skdfh djfh[br]
[br]
[br]
我想在[br]
标记之前插入文字,如下所示:
bla blah d [br] fkjd fkdh fkd fks
sdkf skdfh djfh [INSERTED TEXT][br]
[br]
[br]
我的问题是,我不知道会有多少[br]
个标签或空白字符。
在PHP中有一种简单的方法吗?
答案 0 :(得分:1)
preg_replace的内容怎么样?
preg_replace('!\[br\](\s+\[br\])+!i', 'INSERT$0', $subject);
正则表达式正在寻找[br]
标记,后面可选地包含一些空格,以及更多[br]
标记。可以有任意数量的以下[br]
标记。最后的i表示不区分大小写。
您可以在codepad
上查看此内容答案 1 :(得分:0)
基本上,你会想做这样的事情:
$str = 'bla blah dfkjd fkdh fkd fks sdkf skdfh djfh[br] [BR] [BR]';
$textToFind = '[br]';
$textToInsert = 'Hello World!';
// find the first $textToFind, ie '[br]';
$pos = strpos($str, $textToFind);
// cut from 0 to $pos, then insert the text, then $pos to the end of the string
$newStr = substr($str, 0, $pos) . $textToInsert . substr($str, $pos);
echo $newStr;
答案 2 :(得分:0)
好吧,我不是php的人,但知道一些javescript。它可能会帮助您了解如何解决您的问题。
str = str.replace(/(.*?)((<br>)*)$/,'$1' + insertedText + '$2')
此处str
是包含文字的字符串。
替换函数/(.*?)((<br>)*)$/
的第一个参数是与模式匹配的正则表达式。
(.*?)
与<br>
标记之前显示的文字相匹配。 ((<br>)*)$
匹配任意数量的<br>
,并确保这些<br>
出现在文字末尾。
第二个参数是实际替换的字符串。 insertedText
是您要在原始字符串中插入的文本。
希望它有所帮助。如果您需要任何澄清,请随时发表评论。