나는 당신이 어떤 희생을 치르더라도 정규 표현식을 피한다고 생각합니다. 몇 가지 경우는 다음과 같아야합니다.
- 당신은 regexp의 전문가입니다. 만약 당신이 그렇다면, 아마도 아마 더 빠르고 더 간결한 코드가 될 것이므로 아마도 regexp를 사용해야 할 것입니다. 가독성이 제 의견으로는 엉망이 될지라도.
- 성능을 향상시켜야합니다.
그렇지 않으면 나의 조언은 그것을 사용하지 않는 것입니다! 다음 각 호의 어느 하나에 해당하는 경우에
, 나는이 "/"그들 사이에 슬래시가있는 경우 를 x와 y가 수 있는지 확인하고, 를 바랍니다. 정규식에서 희망 오전, 도와주세요 문제를 해결하는 방법
:
<?php
class Verify {
public static function numbers($str) {
$explode = explode("/", $str);
foreach($explode as $elm) {
if (!filter_var($elm, FILTER_VALIDATE_INT)) {
return false;
}
}
return true;
}
}
class StackTest extends PHPUnit_Framework_TestCase {
public function testBothPartsAreNumbers() {
$array = array(
"1/2",
"1/2",
"1/ 2",
"1 /2"
);
foreach($array as $elm) {
$this->assertTrue(Verify::numbers($elm));
}
}
public function testOneOfThemMightBeNotANumber() {
$array = array(
"1/a",
"a/1",
"1/a",
"b/2",
"b/a",
"1/2.1",
);
foreach($array as $elm) {
$this->assertFalse(Verify::numbers($elm));
}
}
}
?>
[email protected]:~/php/stackoverflow/4916920$ php -v
PHP 5.3.3-1ubuntu9.3 with Suhosin-Patch (cli) (built: Jan 12 2011 16:08:14)
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies
with Xdebug v2.1.0, Copyright (c) 2002-2010, by Derick Rethans
# We need at least PHP5.2 for filter.
[email protected]:~/php/stackoverflow/4916920$ phpunit NumberTest.php
PHPUnit 3.5.10 by Sebastian Bergmann.
..
Time: 0 seconds, Memory: 3.50Mb
OK (2 tests, 10 assertions)
http://www.phpvideotutorials.com/regex/ –
의 일부를 체크 아웃 [오픈 소스 RegexBuddy 대안] (http://stackoverflow.com/questions/89718/is-there-anything-like-regexbuddy-in-the-open-source-world)에 나와있는 도구를 사용하면 시작과 디자인에 도움이 될 것입니다 regexpressions. – mario
도 1.2/4.2와 일치해야합니까? – Hamish