2016-09-26 142 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 , '(())');