2010-11-07 2 views
0

Как я могу извлечь имя из строки с использованием регулярных выражений в PHPКак я могу извлечь имя из строки с помощью регулярных выражений в PHP

<?php 

$myString = "user=anas fares,pass=245654323456543dfgf345rgghf5y"; 

//result should be : 

$username = "anas fares"; 
$password = "245654323456543dfgf345rgghf5y"; 

//remember, I dont know if username is anas fares or anything else. 

?> 
+0

Я слишком устал, чтобы ответить на это прямо сейчас, но вот хороший ресурс что может помочь вам http://www.regular-expressions.info/php.html – ubiquibacon

+1

@typoknig ROTFLMAO. такого рода даже не потрудишься щелкнуть. Зачем учиться или работать, если есть StackOverflow? –

+0

Что является неудовлетворительной вашей проблемой? Создание регулярного выражения или использование функций PHP? Вам действительно нужно научиться использовать регулярное выражение с функциями PHP. – Lekensteyn

ответ

4

A. Non-регулярное выражение подхода.

// deprecated // 
list($username, $password) = explode(',', $myString); 
$username = explode('=', $username); 
$username = str_replace('+', ' ', $username[1]); 
$password = explode('=', $password); 
$password = $password[1]; 

// new version, independent of order // 
$pairs = explode(',', $myString); 
foreach($pairs as $pair){ 
    list($key, $value) = explode('=', $pair); 
    $results[$key] = str_replace('+', ' ', $value); 
} 
// $results['user'] 
// $results['pass'] 

B. Regex.

/^user=([^,]*),pass=(.*)$/ 

C. parse_str. Этот Я рекомендую, и это, вероятно, лучший вариант.

parse_str(str_replace(',', '&', $myString), $results); 
+0

using regexp pls :) – faressoft

+0

Хорошо, я тоже добавил регулярное выражение, но я не рекомендую его. –

+2

@faressoft ЭЙ! Вас нет в ресторане! Подтвердите ответ и скажите «Спасибо, сэр, я ценю ваши усилия, но могу ли я попросить regexp?» –

5
if(preg_match('/^user=(.+?),pass=(.+?)$/', $myString, $matches)){// if there's no match, this won't be executed 
    $username = $matches[1]; 
    $password = $matches[2]; 
} 

Если вы знаете, какие символы разрешены, рекомендуется использовать классы символов вместо или .. Например, вы знаете, что пароль содержит только символы a-z (только нижний регистр) и 0-9, вы должны заменить второй (. +?) На [a-z0-9]+?. Если вы даже знаете, что это фиксированная длина, в случае хеша MD5, вы должны заменить +? на {32} (md5 имеет фиксированную длину 32)

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

  • Нет связанных вопросов^_^