2016-03-21 3 views
4

Я пытаюсь выяснить, является ли первый символ строки косой чертой.preg_match, если первый символ слэша

У меня есть эта строка /var/www/html

$mystring = "/var/www/html"; 
$test = preg_match("/^/[.]/", $mystring); 

if ($test == 1) 
{ 
    echo "ret = 1"; 
} 
else 
{ 
    echo "ret = 0"; 
} 

Но я всегда получаю ret = 0.

+2

Не-регулярное выражение решение, вероятно, легче, но причина, по которой вашим не работает, заключается в том, что вам нужно избежать косой черты, поскольку вы используете ее как разделитель. – jeroen

+1

Вижу, спасибо. И мне также нужно удалить скобки '[]', чтобы заставить его работать. '/^\/./' – Black

+0

Правда, ваше исходное регулярное выражение ищет косую черту, за которой следует точка ... – jeroen

ответ

3

Попробуйте это:

<?php 
$mystring = "/var/www/html"; 
$test = preg_match("/^\//", $mystring); 

if ($test == 1) 
{ 
    echo "ret = 1"; 
} 
else 
{ 
    echo "ret = 0"; 
} 
+3

Почти справа. Но когда вы хотите получить первый символ, это на самом деле ''/^ \ // "' –

+0

@OleK, я только что отредактировал его. Благодаря! –

+0

Почему обратная косая черта перед косой чертой? Должен ли я замаскировать косую черту, поставив перед ним обратную косую черту? – Black

3

Вы можете просто использовать strpos() для этого:

<?php 
    $mystring = "/var/www/html"; 
    if(strpos($mystring,"/") === 0){ 
     echo "ret = 1"; 
    }else{ 
     echo "ret = 0"; 
    } 
?>  
+1

Извините, если я ошибаюсь здесь, но не будет strpos искать полное жало для /, а не только первого символа? – Andreas

+2

да, но оно касается положения заданной строки, в вашем случае '/' какая позиция равна 0 - она ​​дает вам положение первого вхождения. – mitkosoft

+1

Aaa! Правда. Я не думал о === 0. Обычно я использую strpos с === false. Не думал о «фактическом» использовании функции :-) – Andreas

3

Любая причина, почему вы должны использовать preg_match?

Вы не можете использовать субстрат?

if (substr($mystring, 0, 1) == "/") { 
    echo "ret= 1"; 
} 
2

Если это все, что вы хотите сделать, то вы также можете сделать что-то вроде этого:

echo $mystring[0] == "/" ? "ret 1" : "ret 0"; 

Нет необходимости использовать другие функции, на самом деле.

-3

Вы должны избежать / в вашей модели, как вы уже используете его в качестве регулярных выражений разделителей, поэтому попробуйте следующее:

$mystring = "/var/www/html"; 
$test = preg_match("/^\//", $mystring); 

if ($test == 1) 
{ 
    echo "ret = 1"; 
} 
else 
{ 
    echo "ret = 0"; 
} 
+2

Этот ответ уже существует, но спасибо. – Black

+2

скопировать и вставить, чтобы заработать очки? –

+1

@OleK Клянусь Богом, я не крал ваши комментарии и ответы других плакатов: D – starkeen

Смежные вопросы