根据出现情况替换字符串中的符号。 PHP

时间:2014-10-25 00:55:11

标签: php

我有一个用符号格式化的字符串(符号类似于用于格式化本网站上的问题的符号)。

规则:

  1. ** Hello **表示粗体=< B个你好< / B个

  2. * Hello \\表示项目符号列表=<立GT;你好< /立GT;

  3. Hello \\表示换行= Hello< BR>

  4. 我想替换:

    1. **的每次首次出现都是< B个和每一秒**与< / B个。
    2. *与<相同李>和\\与< /锂取代。
    3. 之前在字符串中没有*某个地方的所有\\应该转换为< BR>
    4. 示例字符串:

      $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中解决此问题的最佳方法是什么?

1 个答案:

答案 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);