我有表格现场电话的Symfony 2.6和个人信息表格,如rhis
+38 (918) 280-1594
如果开发人员写“_”或更多数字,则为空格。我如何检查这个? 像开发人员写的那样
+38 (918) 2 801_594
我在DB中设置
+38(918)2801594
解决此问题的流程和决策或捆绑包是什么?
->add('telephone', null, array('label' => 'Telephone', 'max_length' => 255, 'required' => false));
$builder->get('telephone')->addModelTransformer(new CallbackTransformer(
// transform <br/> to \n so the textarea reads easier
function ($originalDescription) {
return preg_replace('/[^0-9()]+/', "", $originalDescription);
},
function ($submittedDescription) {
// remove most HTML tags (but not br,p)
$cleaned = strip_tags($submittedDescription, '<br><br/><p>');
// transform any \n to real <br/>
return str_replace("\n", '<br/>', $cleaned);
}
));
但它是如何运作的?我写了电话65454 ###而这个“#”写在我的数据库中这是错的。为什么我不明白?我需要确定位数(12位数)。也许请举例。
我发布了+30632666 $$#并且在DB中设置了这个+30632666 $$#但是在形式上可见这个30632666这正是我需要在我的数据库中,我需要在数据库中设置正确的电话并限制13个字符 - 一个“+ “和12 - 数字
答案 0 :(得分:6)
安装MisdPhoneNumberBundle后,您可以使用该套件的验证器:
use Doctrine\ORM\Mapping as ORM;
use Misd\PhoneNumberBundle\Validator\Constraints as MisdAssert;
/**
* @ORM\Entity
* @ORM\Table
*/
class Entity
{
// ...
/**
* @ORM\Column(type="string", length=50)
* @MisdAssert\PhoneNumber()
*/
private $phone;
}
答案 1 :(得分:1)
您应该使用MisdPhoneNumberBundle,它会为您提供有关电话号码和Symfony的所有信息。
答案 2 :(得分:1)
我不明白你试图用其他东西替换#
是什么意思。如果这是preg_replace
调用,那么它不起作用并不令人惊讶,因为你正在寻找一个看起来像这样的字符串:
#<br, (optional spaces), (Maybe /), >#
如果你想像评论所说的那样将<br/>
替换为\n
,你需要设置这种模式:
/<br\s*\/?\s*>/i
注意开始和结束时的/
以限制模式,最后i
表示任何大小写匹配。
如果您要替换#
,空格和_
,我认为最好是替换任何不是(
,)
的字符。 。在这种情况下,此正则表达式应该工作(未测试):
preg_replace('/[^0-9()]+/', "", $originalDescription);
这意味着:用空字符串替换0-9
,(
或)
中不包含(因为'^')的1个或多个字符的任何序列。
答案 3 :(得分:0)
您应该使用Symfony Data Transformers完成此任务。