|
|
|
|
|
для: kasmanaft
(06.02.2008 в 13:12)
| | работает!
спасибо! | |
|
|
|
|
|
|
|
для: Soft_Dm
(06.02.2008 в 11:45)
| | Зачем тогда регулярные выражения? Можно просто сравнить эти слова:
<?php
$word = "com";
$arr = array("org", "net", "com");
if (!in_array($word, $arr))
echo "ok";
else echo "no";
?>
|
Для регистронезависимого сравнения можно использовать, например, strcasecmp().
Если хочется регулярными выражениями, можно проверить так:
<?
$subject = "com";
$pattern = '/^(com|org|net)$/';
$flag = !preg_match($pattern, $subject, $matches);
print_r($matches);
var_dump($flag);
|
А чтобы заработал вариант с этой опережающей проверкой, можно исправить его вот так:
/^(?!(com|org|net)\b)[a-z]+$/
|
Но лучше так не делать : ) | |
|
|
|
|
|
|
|
для: kasmanaft
(05.02.2008 в 20:13)
| | необходимо написать регулярное выражение которое будет отрицать слова из массива(проверка уникальности) а остальные слова будет пропускать.
на даном этапе проблема в том, что при
$subject = "com";
$pattern = '/^(?!com|org|net)[a-z]+\b/';
$flag = preg_match($pattern, $subject, $matches);
print_r($matches);
echo "<br>".$flag;
com - отрицает
comon - тоже огтрицает, а должно пропускать!!!
Примечание. Здесь не рассматриваются домены - это может быть любой массив слов. | |
|
|
|
|
|
|
|
для: Soft_Dm
(05.02.2008 в 19:51)
| | Поэтому я и прошу вас уточнить задачу.
Добавьте "^" в начало выражения - заработает. В данном конкретном случае. | |
|
|
|
|
|
|
|
для: kasmanaft
(05.02.2008 в 19:16)
| | $subject = "com";
$pattern = '/(?!com|org|net)[a-z]+\b/';
$flag = preg_match($pattern, $subject, $matches);
print_r($matches);
echo "<br>".$flag;
ответ
Array ( [0] => om )
1
------------------------------
$subject = "comon";
$pattern = '/(?!com|org|net)[a-z]+\b/';
$flag = preg_match($pattern, $subject, $matches);
print_r($matches);
echo "<br>".$flag;
ответ
Array ( [0] => omon )
1 | |
|
|
|
|
|
|
|
для: Soft_Dm
(05.02.2008 в 19:04)
| | > если сравниваю с com
Именно с "com" ? Зачем тогда рег. выражения применять?
Если на конце урла com не должно быть, можно как-то так попробовать:
часть_урла_до_последней_точки\.(?!com|org|net)[a-z]+\b
UPD или stripos() тогда... если не важно, где com находится; !preg_match(""/com|org|net/i" ....) | |
|
|
|
|
|
|
|
для: kasmanaft
(05.02.2008 в 18:52)
| | есть массив слов com|org|net
если сравниваю с com - хочу получить отрицание (элемент совпал с элементом массива)
если сравниваю с comn, или comon -это правильно (элемент не совпал с элементом массива)
с (?!com|org|net) не получается | |
|
|
|
|
|
|
|
для: Soft_Dm
(05.02.2008 в 18:44)
| | Для этого можно использовать опережающую негативную проверку (?!com|org|net).
Опишите поточнее задачу... если не получится. | |
|
|
|
|
|
|
|
для: Soft_Dm
(05.02.2008 в 18:27)
| | если [^(com|org|net)]
то comc, netm - отрицает(отрицает еще и буквы етих слов)
comw - нормально
может как-то указать группу слов ? а не символы | |
|
|
|
|
|
|
|
для: Soft_Dm
(05.02.2008 в 18:27)
| | Так надо тогда убрать [a-z]* | |
|
|
|
|