2012-11-09 161 views
1

我有一个给用户很简单的文本框。将字符串的一部分移动到字符串的另一部分

<textarea name="text">ENTER YOUR TEXT, DUDE!</textarea> 

有时,用户可以输入像这样:

blablablatext blablabla $ 10 blablabla blablablatext 

这很好,但我想要做的是把美元符号,并自动将其放置数(反之亦然)后:

blablablatext blablabla 10 $ blablabla blablablatext 

基本上,我想要做的是:

  1. 检测是否存在一个货币符号
  2. 检测,如果数字出现在符号后
  3. 检测,如果,例如,一个字母(或没有)出现在数字之后
  4. 采取的货币符号,并将其放置在数字和字母之间(或者在数字之后,如果之后什么也没有)

这样做的最佳方式是什么?有这样的可能吗?

+0

由于您在第三点明确提到了“信件出现在数字后面”,因此第四点中的“将美元符号放在数字和其后面的字母之间”和“将美元符号放在数字后面”有什么区别? – Passerby

+0

第三点,我只以“字母”为例。它可以是除了你可能搜索的数字,文字,点,逗号之外的任何东西,或者像我在第四点中提到的“有点儿”一样,什么也没有。这就是为什么我要么在数字和例如字母之间,要么在数字之后没有任何其他字符时,就在数字之后。 对不起,困惑,希望清除它。我相应地改变了我的帖子。 – noClue

+0

你的3点和4点看起来可以合并成一个“将数字背后的符号”,因为无论(如果有的话)出现在数字后面都没有关系。这就是为什么我明确提出第三点来问你是否意味着什么。 – Passerby

回答

2

你大概可以总结为正则表达式这一切:

echo preg_replace('/\$\s*(\d+)(?=\s*[^$])/', '$1\$', $text); 

这仅仅是一个快速现成的,袖口例如,匹配一个$也许其次是一些空白后跟一个数字可能后跟一些空白,而不是另一个$,并用[编号] $替换它。我想推荐你​​。

+0

谢谢,那就是我一直在寻找的。只是在正确的方向稍微推动一下。 :)我相信我能想出一些东西。再次感谢! – noClue

相关问题