2016-09-26 140 views
-2

假设我有这样的代码:忽略符号

<form method="POST"> 
<input type="text" name="expression"> 
<input type="submit" name="submitexpression"> 
</form> 

<?php 
if(isset($_POST['submitexpression'])) 
{ 
$getexpression = $_POST['expression']; 

?> 

如果我输入$getexpression值:((xyz)),我怎么忽略了括号,这样,当我使用strlen只给出了3的值不是7 ?

+0

取决于模式,但听起来像你需要一个正则表达式。 –

+0

2x str_replace(用空字符串替换括号)然后strlen。 – Natrium

+0

@Natrium我想忽略任何不在字母表中的东西,我只是把括号放在一些表达式上。 和关于strlen,我用于字符限制。我的程序只接受30个字符,不包括括号 – Gorodetski

回答

0

我觉得preg_replace()是更好的解决方案在这里,因为它可以让你删除任何东西,除了字母(如你在意见中的要求):

$numChars = strlen(preg_replace("/[^A-Za-z]/", '', $getexpression)); 
+0

非常感谢。现在我可以在我的lambda项目中迈出一步。 lol – Gorodetski

+0

@Gorodetski不客气:)如果你想要统计空格字符,你所要做的就是把'/ [^ A-Za-z] /'改成'/ [^ A-Za-z] /' – icecub

+0

确定;)这个preg函数看起来非常酷。它现在吸引了我的注意力lol – Gorodetski

0

你可以简单地剥离工作的()使用正则表达式像这样:

<?php 
    if(isset($_POST['submitexpression'])){ 
     $getexpression = $_POST['expression']; 
     // IF YOU MAY NOT KNOW HOW MANY "((" AND "))" TO EXPECT, 
     // REGEXP IS A BETTER OPTION, OTHERWISE str_replace WOULD DO: 
     $regX   = array("#(^\({1,})#", "#(\){1,}$)#"); 
     $getexpression = preg_replace($regX, "", $getexpression); 

     var_dump($getexpression); 
    } 

?> 
+0

没有必要变得困难。阅读他的评论:“我想忽略任何不在字母表中的东西” – icecub

0
trim($getexpression , '(())');