我有一个用符号格式化的字符串(符号类似于用于格式化本网站上的问题的符号)。
规则:
** Hello **表示粗体=< B个你好< / B个
* Hello \\表示项目符号列表=<立GT;你好< /立GT;
Hello \\表示换行= Hello< BR>
我想替换:
示例字符串:
$myString = 'Hello my **Friend**,\\here is the stuff you need to buy for me:*knife\\*water bottle\\***fake ID**\\\\\\Thank you in advance and don not forget the **fake ID**!\\Sincerely yours\\Eddy'
注意:这种风格不是我的发明。它正在使用中,我必须转换它。
我preg_match() - 它的一部分,以获取标签之间的东西。
$myString = 'Hello my **Friend**,\\here is the stuff you need to buy for me:*knife\\*water bottle\\***fake ID**\\\\\\Thank you in advance and don not forget the **fake ID**!\\Sincerely yours\\Eddy';
$result = array();
$firstBold = '<b>'. preg_match('~\*\*(.*?)\*\*~', $myString, $firstBold) . </b>;
$result += $firstBold
// and so on...
(忽略此错误,从内存中写出)
我没有考虑第一个粗体之前的单词,但它基本相同。 这将在最后完成工作,但对我来说似乎很麻烦。我正在寻找一种更优雅的方式来做到这一点。
在PHP中解决此问题的最佳方法是什么?
答案 0 :(得分:1)
您可以使用preg_replace。因为你的标记,你的替换顺序很重要。
http://php.net/manual/en/function.preg-replace.php
$myString = preg_replace("/[*][*]([^*]+)[*][*]/",'<b>${1}</b>',$myString);
$myString = preg_replace("/[*]([^\/]+)[\/][\/]/",'<li>${1}</li>',$myString);
$myString = str_replace("//",'<br/>',$myString);